From 63166345f8b49d5575daf21934221477e6bfd626 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Thu, 29 Feb 2024 22:02:18 +0100 Subject: [PATCH 01/27] initial web3.py changes --- examples/on-chain_mnist/action_agent.py | 25 +++++++------- giza_actions/agent.py | 45 ++++++++++++++++--------- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index d3c643a..da96b91 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -1,6 +1,7 @@ -from ape_accounts import import_account_from_mnemonic +from eth_account import Account import requests import os +import json import numpy as np from PIL import Image from giza_actions.action import Action, action @@ -21,6 +22,10 @@ class ProofType(EIP712Type): class ProofMessage(EIP712Message): proof: ProofType +def import_account(mnemonic): + account = Account.from_mnemonic(mnemonic) + return account + # Download model @task def download_model(): @@ -76,29 +81,25 @@ def sign_proof(proofMessage: ProofMessage, account): @task async def verify_and_transmit(agent: GizaAgent): # Define account details, these are stored in process.env - alias = os.getenv("ACCOUNT_ALIAS") - passphrase = os.getenv("PASSPHRASE") mnemonic = os.getenv("MNEMONIC") - print(alias) - print(passphrase) - print(mnemonic) - contract_address = os.getenv("CONTRACT_ADDRESS") - contract_abi_path = "abi/MNISTNFT_abi.json" + account = import_account(mnemonic) - # Get account - account = import_account_from_mnemonic(alias, passphrase, mnemonic) + contract_address = os.getenv("CONTRACT_ADDRESS") + with open("abi/MNISTNFT_abi.json", 'r') as f: + abi = json.load(f) + # Structure and sign the poof proofMessage = await structure_proof(agent, account) signed_proof = sign_proof(proofMessage, account) # Generate calldata # Observe how we use the output of the agent's inference as the function parameter - calldata = agent.generate_calldata(contract_abi_path, "mint", [agent.inference]) + calldata = agent.generate_calldata(abi, "mint", [agent.inference]) proof = proofMessage.proof # Transmit transaction - receipt = agent.transmit(account, contract_address, contract_abi_path, agent.model, proof, signed_proof, calldata) + receipt = agent.transmit(account, contract_address, abi, agent.model, proof, signed_proof, calldata) return receipt diff --git a/giza_actions/agent.py b/giza_actions/agent.py index e7583f8..fdc8bbb 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -1,10 +1,9 @@ import json from web3 import Web3 +from web3.exceptions import TransactionError +from eth_account import Account from giza_actions.model import GizaModel -from typing import Optional import requests -from ape import Contract -from ape.types.signatures import recover_signer import logging from giza.frameworks.cairo import verify @@ -119,24 +118,38 @@ async def verify(self, proof): logging.error("An error occurred when verifying") return False - async def transmit(self, account, sc_address: str, sc_abi_path: str, proof, signed_proof, calldata: str): + def transmit(self, account: Account, contract_address: str, contract_abi: list, calldata: str): """ Transmit: Verify the model proof, Returns: A transaction receipt """ - # Verify the user's proof - assert self.verify(proof) - # Verify the signature - recovered_signer = recover_signer(proof, signed_proof) - assert recovered_signer == account.address - # Create contract instance - contract = Contract(sc_address, abi=sc_abi_path) - # Call the contract try: - receipt = contract.call(calldata, account) - if not receipt.failed: - return receipt + web3 = Web3() + contract = web3.eth.contract(address=contract_address, abi=contract_abi) + nonce = web3.eth.get_transaction_count(account.address) + + tx = contract.caller.call(tx={ + "to": contract_address, + "data": calldata, + "nonce": nonce, + "gas": 2000000 + }) + + signed_tx = account.sign_transaction(tx) + tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction) + receipt = web3.eth.wait_for_transaction_receipt(tx_hash) + return receipt + + except ValueError as e: + print(f"Error encoding transaction: {e}") + return None + + except TransactionError as e: + print(f"Transaction error: {e}") + return None + except Exception as e: - raise Exception(f"Transaction failed: {e}") \ No newline at end of file + print(f"Error transmitting transaction: {e}") + return None \ No newline at end of file From 0041f45ff280491891c15301d2c58db137eb544c Mon Sep 17 00:00:00 2001 From: lancenonce Date: Thu, 29 Feb 2024 22:05:04 +0100 Subject: [PATCH 02/27] refactor transmit --- examples/on-chain_mnist/action_agent.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index da96b91..8efb77a 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -99,7 +99,8 @@ async def verify_and_transmit(agent: GizaAgent): proof = proofMessage.proof # Transmit transaction - receipt = agent.transmit(account, contract_address, abi, agent.model, proof, signed_proof, calldata) + # agent.model, proof, signed_proof, + receipt = agent.transmit(account, contract_address, abi, calldata) return receipt From b66e6b3ad2276e5d66776bc9a9cd457b789d7288 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Thu, 29 Feb 2024 22:13:15 +0100 Subject: [PATCH 03/27] verify sigs and proof --- examples/on-chain_mnist/action_agent.py | 2 +- giza_actions/agent.py | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 8efb77a..af76fbc 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -100,7 +100,7 @@ async def verify_and_transmit(agent: GizaAgent): # Transmit transaction # agent.model, proof, signed_proof, - receipt = agent.transmit(account, contract_address, abi, calldata) + receipt = agent.transmit(account, contract_address, abi, proof, signed_proof, calldata) return receipt diff --git a/giza_actions/agent.py b/giza_actions/agent.py index fdc8bbb..47bc970 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -118,13 +118,22 @@ async def verify(self, proof): logging.error("An error occurred when verifying") return False - def transmit(self, account: Account, contract_address: str, contract_abi: list, calldata: str): + def transmit(self, account: Account, contract_address: str, contract_abi: list, proof, signed_proof, calldata: str): """ Transmit: Verify the model proof, Returns: A transaction receipt """ + web3 = Web3() + # Verify the proof signature + signer = web3.eth.account.recover_message(text=proof, signature=signed_proof) + assert signer.lower() == account.address.lower() + # Verify the proof + assert self.verify(proof) + + print("All good! ✅ Sending transaction...") + try: web3 = Web3() contract = web3.eth.contract(address=contract_address, abi=contract_abi) From 62d76d15d8519de8ddc2b940fd33f0430c19f844 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Mon, 4 Mar 2024 10:29:24 +0100 Subject: [PATCH 04/27] fix: enable web3py mnemonic --- examples/on-chain_mnist/action_agent.py | 4 ++++ giza_actions/agent.py | 5 ----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index af76fbc..461416d 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -81,9 +81,13 @@ def sign_proof(proofMessage: ProofMessage, account): @task async def verify_and_transmit(agent: GizaAgent): # Define account details, these are stored in process.env + # Mnemonics are disabled for now, we can add a private key directly + Account.enable_unaudited_hdwallet_features() mnemonic = os.getenv("MNEMONIC") account = import_account(mnemonic) + account = Account.create() + contract_address = os.getenv("CONTRACT_ADDRESS") with open("abi/MNISTNFT_abi.json", 'r') as f: abi = json.load(f) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 47bc970..7e166a1 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -1,6 +1,5 @@ import json from web3 import Web3 -from web3.exceptions import TransactionError from eth_account import Account from giza_actions.model import GizaModel import requests @@ -155,10 +154,6 @@ def transmit(self, account: Account, contract_address: str, contract_abi: list, print(f"Error encoding transaction: {e}") return None - except TransactionError as e: - print(f"Transaction error: {e}") - return None - except Exception as e: print(f"Error transmitting transaction: {e}") return None \ No newline at end of file From 6dcc892f04059bb1f95bb2115f9c0fefad5876a5 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Mon, 4 Mar 2024 10:50:18 +0100 Subject: [PATCH 05/27] fix: separate tasks from tasks and typos --- examples/on-chain_mnist/action_agent.py | 34 ++++++++++++------------- giza_actions/agent.py | 4 ++- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 461416d..0cdffdb 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -11,7 +11,6 @@ from eip712.messages import EIP712Message, EIP712Type from dotenv import load_dotenv - load_dotenv() class ProofType(EIP712Type): @@ -79,22 +78,11 @@ def sign_proof(proofMessage: ProofMessage, account): # Transmit @task -async def verify_and_transmit(agent: GizaAgent): - # Define account details, these are stored in process.env - # Mnemonics are disabled for now, we can add a private key directly - Account.enable_unaudited_hdwallet_features() - mnemonic = os.getenv("MNEMONIC") - account = import_account(mnemonic) - - account = Account.create() - +async def verify_and_transmit(agent: GizaAgent, account, proofMessage: ProofMessage, signedProof): + # Define tx details, these are stored in process.env contract_address = os.getenv("CONTRACT_ADDRESS") - with open("abi/MNISTNFT_abi.json", 'r') as f: + with open("examples/on-chain_mnist/abi/MNISTNFT_abi.json", 'r') as f: abi = json.load(f) - - # Structure and sign the poof - proofMessage = await structure_proof(agent, account) - signed_proof = sign_proof(proofMessage, account) # Generate calldata # Observe how we use the output of the agent's inference as the function parameter @@ -104,7 +92,7 @@ async def verify_and_transmit(agent: GizaAgent): # Transmit transaction # agent.model, proof, signed_proof, - receipt = agent.transmit(account, contract_address, abi, proof, signed_proof, calldata) + receipt = agent.transmit(account, contract_address, abi, proof, signedProof, calldata) return receipt @@ -118,13 +106,25 @@ async def transmission(): img = process_image(img) id = 420 version = 1 + + # Mnemonics are disabled inherently, so we must enable + Account.enable_unaudited_hdwallet_features() + mnemonic = os.getenv("MNEMONIC") + account = import_account(mnemonic) + + account = Account.create() # Make sure the model is deployed model = GizaModel(id=id, version=version) agent = GizaAgent(model, id, version) agent.infer(input_feed={"image": img}) # Perhaps add a wait() function + proofMessage = await structure_proof(agent, account) + + # Structure and sign the poof + signed_proof = sign_proof(proofMessage, account) + try: - receipt = await verify_and_transmit(agent) + receipt = await verify_and_transmit(agent, proofMessage, signed_proof) except Exception as e: print(f"Error: {e}") return receipt diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 7e166a1..5b7e087 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -5,6 +5,8 @@ import requests import logging from giza.frameworks.cairo import verify +from giza_actions.utils import get_deployment_uri + class GizaAgent: """ @@ -58,7 +60,7 @@ def infer(self, input_file=None, input_feed=None): async def _get_model_data(self): """Get proof data from GCP and save it as a class attribute""" - uri = self.model.get_deployment_uri(self.model_id, self.version_id) + uri = get_deployment_uri(self.model_id, self.version_id) proof_metadata_url = f"https://api-dev.gizatech.xyz/api/v1/models/{self.model.id}/versions/{self.model.version}/deployments/{uri}/proofs/{self.request_id}" response = requests.get(proof_metadata_url) From a73343573b24c648024b4ba412cd9f199be21e9c Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 5 Mar 2024 17:48:20 +0100 Subject: [PATCH 06/27] SDK refactor, fixes --- examples/on-chain_mnist/action_agent.py | 94 ++++------- giza_actions/agent.py | 213 +++++++++++++++++++----- giza_actions/model.py | 4 + 3 files changed, 201 insertions(+), 110 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 0cdffdb..3431afb 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -1,26 +1,20 @@ from eth_account import Account +from eth_account.messages import SignableMessage import requests import os import json import numpy as np from PIL import Image from giza_actions.action import Action, action -from giza_actions.agent import GizaAgent +from giza_actions.agent import GizaAgent, ProofType, ProofMessage from giza_actions.model import GizaModel from giza_actions.task import task -from eip712.messages import EIP712Message, EIP712Type +# Add these later when ape learns how to behave +# from eip712.messages import EIP712Message, EIP712Type from dotenv import load_dotenv load_dotenv() -class ProofType(EIP712Type): - proof_id: "string" # type: ignore - proof: "string" # type: ignore - address: "address" # type: ignore - -class ProofMessage(EIP712Message): - proof: ProofType - def import_account(mnemonic): account = Account.from_mnemonic(mnemonic) return account @@ -60,45 +54,9 @@ def get_image(path): img = np.array(img) return img -# Structure proof -@task -async def structure_proof(agent: GizaAgent, account): - raw_proof = await agent._get_model_data() - proof_id = agent.model.id - address = account.address - - proof = ProofType(proof_id=proof_id, proof=raw_proof, address=address) - - proofMessage = ProofMessage(proof=proof) - return proofMessage - -@task -def sign_proof(proofMessage: ProofMessage, account): - return account.sign_message(proofMessage) - -# Transmit -@task -async def verify_and_transmit(agent: GizaAgent, account, proofMessage: ProofMessage, signedProof): - # Define tx details, these are stored in process.env - contract_address = os.getenv("CONTRACT_ADDRESS") - with open("examples/on-chain_mnist/abi/MNISTNFT_abi.json", 'r') as f: - abi = json.load(f) - - # Generate calldata - # Observe how we use the output of the agent's inference as the function parameter - calldata = agent.generate_calldata(abi, "mint", [agent.inference]) - - proof = proofMessage.proof - - # Transmit transaction - # agent.model, proof, signed_proof, - receipt = agent.transmit(account, contract_address, abi, proof, signedProof, calldata) - - return receipt - # Create Action @action(log_prints=True) -async def transmission(): +def transmission(): download_model() download_image() img_path = 'seven.png' @@ -111,24 +69,30 @@ async def transmission(): Account.enable_unaudited_hdwallet_features() mnemonic = os.getenv("MNEMONIC") account = import_account(mnemonic) - - account = Account.create() - # Make sure the model is deployed - model = GizaModel(id=id, version=version) - agent = GizaAgent(model, id, version) - agent.infer(input_feed={"image": img}) - # Perhaps add a wait() function - proofMessage = await structure_proof(agent, account) - - # Structure and sign the poof - signed_proof = sign_proof(proofMessage, account) - try: - receipt = await verify_and_transmit(agent, proofMessage, signed_proof) - except Exception as e: - print(f"Error: {e}") - return receipt + # Make sure the model is deployed, then create an agent + agent = GizaAgent(id=id, version=version) + # Rather than calling predict, we call infer to store the result + agent.infer(input_feed={"image": img}) + # Fetch the contract address and modified inference result + contract_address = os.getenv("CONTRACT_ADDRESS") + inference_result = int(agent.inference[0][0] * 10) + # Get the proof + proof_path = agent.get_model_data() + # verify proof + verified = agent.verify(proof_path) + # Sign the proof if verification succeeds, transmit txn + if verified: + (signed_proof, is_none, proofMessage) = agent.sign_proof(account) + try: + receipt = agent.transmit(account, contract_address, 11155111, "mint", inference_result, signed_proof, is_none, proofMessage, None, True) + return receipt + except Exception as e: + print(f"Error: {e}") + else: + raise Exception("Proof verification failed.") if __name__ == '__main__': - action_deploy = Action(entrypoint=transmission, name="transmit-to-chain") - action_deploy.serve(name="transmit-to-chain") \ No newline at end of file + transmission() + # action_deploy = Action(entrypoint=transmission, name="transmit-to-chain") + # action_deploy.serve(name="transmit-to-chain") \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 5b7e087..a259abc 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -1,21 +1,36 @@ -import json +import os +import time from web3 import Web3 from eth_account import Account +from eth_account.messages import SignableMessage +from eth_typing import Address from giza_actions.model import GizaModel import requests import logging from giza.frameworks.cairo import verify from giza_actions.utils import get_deployment_uri +from giza.client import DeploymentsClient +from giza import API_HOST +from pydantic import BaseModel +from dotenv import load_dotenv +from typing import List, Optional, Union +load_dotenv() -class GizaAgent: +class ProofType(BaseModel): + model_id: int # The model being used for inference + proof: Optional[str] # The proof of inference + address: Address # Who is the signer? + +class ProofMessage(BaseModel): + proof: ProofType + +class GizaAgent(GizaModel): """ A blockchain AI agent that helps users put their Actions on-chain. Uses Ape framework and GizaModel to verify a model proof off-chain, sign it with the user's account, and send results to a select EVM chain to execute code. Attributes: model (GizaModel): The model that this deployer uploads proofs for. This model must have the following fields: id, version, orion_runner_service_url in order to work. This is because all on-chain models require a proof to be generated by Orion Runner. - model_id: The model_id of the model we are using for on-chain inference - version_id: The version_id of the model we are using for on-chain inference inference: The result of the GizaModel inference request_id: The request_id of the proof to fetch from the GCP proof: The proof from GCP that we will use to verify, sign, and send along with inference data @@ -29,15 +44,13 @@ class GizaAgent: deploy: verifies the proof, then calls the smart contract with calldata from inference """ - def __init__(self, model: GizaModel, model_id, version_id): + def __init__(self, id: Optional[int] = None, version: Optional[int] = None, **kwargs): """Initialize deployer. Args: model (GizaModel): GizaModel instance """ - self.model = model - self.model_id = model_id - self.version_id = version_id + super().__init__(id=id, version=version, **kwargs) def infer(self, input_file=None, input_feed=None): @@ -50,32 +63,48 @@ def infer(self, input_file=None, input_feed=None): params['input_feed'] = input_feed params['verifiable'] = True - params['job_size'] = "L" + params['job_size'] = "M" params['output_dtype'] = "Tensor" - self.inference, self.request_id = self.model.predict(**params) + self.inference, self.request_id = self.predict(**params) print("Inference saved! ✅ Result: ", self.inference, self.request_id) - async def _get_model_data(self): + def get_model_data(self): """Get proof data from GCP and save it as a class attribute""" - + client = DeploymentsClient(API_HOST) + uri = get_deployment_uri(self.model_id, self.version_id) - proof_metadata_url = f"https://api-dev.gizatech.xyz/api/v1/models/{self.model.id}/versions/{self.model.version}/deployments/{uri}/proofs/{self.request_id}" + # get this from CLI + proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" - response = requests.get(proof_metadata_url) - - logging.info(f"Response status code: {response.status_code}") - logging.debug(f"Full response: {response.text}") + time.sleep(3) + logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") + deployment_id = get_deployment_id(self.model_id, self.version_id) + timeout = time.time() + 800 - if response.status_code == 200: - proof_metadata = response.json() - self.proof = proof_metadata - return proof_metadata - else: - raise Exception(f"Failed to get proof metadata: {response.text}") + while True: + now = time.time() + if now > timeout: + print("Proof retrieval timed out") + raise TimeoutError("Proof retrieval timed out") + try: + proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) + print(f"Proof: {proof.json(exclude_unset=True)}") + break # Exit the loop if proof is retrieved successfully + except requests.exceptions.HTTPError: + print("Proof retrieval failing, sleeping for 5 seconds") + time.sleep(5) + + # Save the proof to a file + proof_file = "zk.proof" + content = client.download_proof(self.model_id, self.version_id, deployment_id, self.request_id) + with open(proof_file, "wb") as f: + f.write(content) - def generate_calldata(self, abi_path, function_name, parameters): + return os.path.abspath(proof_file) + + def _generate_calldata(self, contract_address: Address, chain_id, function_name, parameters): """ Generate calldata for calling a smart contract function @@ -87,19 +116,74 @@ def generate_calldata(self, abi_path, function_name, parameters): Returns: str: Hex string of calldata """ - with open(abi_path, 'r') as f: - abi = json.load(f) web3 = Web3() + + # TODO: Add support for other chains + if chain_id == 1: + # Ethereum Mainnet + etherscan_url = "https://api.etherscan.io/api" + elif chain_id == 1115511: + # Ethereum Sepolia Testnet + etherscan_url = "https://api-sepolia.etherscan.io/api" + elif chain_id == 5: + # Ethereum Goerli Testnet + etherscan_url = "https://api-goerli.etherscan.io/api" + else: + raise ValueError("Unsupported chain ID") + + # Make an API request to the Etherscan API to retrieve the contract ABI + params = { + "module": "contract", + "action": "getabi", + "address": contract_address, + "apikey": os.environ["ETHERSCAN_API_KEY"], + } + + response = requests.get(etherscan_url, params=params) + response_json = response.json() + + if response_json["status"] == "1": + abi = response_json["result"][0]["ABI"] + else: + raise ValueError("Failed to retrieve contract ABI") + contract = web3.eth.contract(abi=abi) - function_abi = next((x for x in abi if x['name'] == function_name), None) + function_abi = None + for item in abi: + if 'name' in item and item['name'] == function_name: + function_abi = item + break + if function_abi is None: raise ValueError(f"Function {function_name} not found in ABI") - + calldata = contract.encodeABI(function_name, args=parameters) return calldata + async def sign_proof(self, account: Account, proof: Optional[str]): + address = account.address + + proof = ProofType(model_id=self.model_id, proof=proof, address=address) + proofMessage = ProofMessage(proof=proof) + + raw_message = proofMessage.proof.proof + version = b'\x19' + header = b'' + + if proofMessage.proof.proof is None: + dummy_message = "dummy_proof" + dummy_body = dummy_message.encode('utf-8') + dummy_signable_message = SignableMessage(version=version, header=header, body=dummy_body) + dummy_signature = account.sign_message(dummy_signable_message) + return (dummy_signature, True, proofMessage) + + body = raw_message.encode('utf-8') + signable_message = SignableMessage(version=version, header=header, body=body) + sig = account.sign_message(signable_message) + return (sig, False, proofMessage) + async def verify(self, proof): """ Verify proof locally. Must be run *after* infer() and _get_model_data() have been run. @@ -107,8 +191,8 @@ async def verify(self, proof): Returns: bool: True if proof is valid """ - model_id = self.model.id - version_id = self.model.version + model_id = self.model_id + version_id = self.version_id try: result = verify(proof, model_id, version_id) if result is None: @@ -119,35 +203,62 @@ async def verify(self, proof): logging.error("An error occurred when verifying") return False - def transmit(self, account: Account, contract_address: str, contract_abi: list, proof, signed_proof, calldata: str): + def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, signed_proof, is_none, proofMessage, rpc_url: Optional[str], unsafe: bool = False): """ - Transmit: Verify the model proof, + Transmit: Verify the proof signature (so we know that the account owner signed off on the proof verification), verify the proof, then send the transaction to the contract. Returns: A transaction receipt """ + web3 = Web3() - # Verify the proof signature - signer = web3.eth.account.recover_message(text=proof, signature=signed_proof) - assert signer.lower() == account.address.lower() - # Verify the proof - assert self.verify(proof) + + if not unsafe: + if is_none: + raise ValueError("Proof cannot be None when unsafe is False") + + print("Proof retrieved! ✅") + signer = web3.eth.account.recover_message(proofMessage.proof.proof, signed_proof) + assert signer.lower() == account.address.lower() + print("Proof signature verified! 🔥") + assert self._verify(proofMessage.proof.proof) + print("Proof verified! ⚡️") + else: + if is_none: + print("Warning: Proof is None. Skipping proof verification.") + # Generate a dummy signature + signed_proof = account.sign_message("dummy_proof") + else: + print("Proof retrieved! ✅") + signer = web3.eth.account.recover_message(proofMessage.proof.proof, signed_proof) + assert signer.lower() == account.address.lower() + print("Proof signature verified! 🔥") + assert self._verify(proofMessage.proof.proof) + print("Proof verified! ⚡️") print("All good! ✅ Sending transaction...") try: - web3 = Web3() - contract = web3.eth.contract(address=contract_address, abi=contract_abi) + if rpc_url is not None: + web3 = Web3(Web3.HTTPProvider(rpc_url)) + else: + alchemy_url = "https://eth-sepolia.g.alchemy.com/v2/aGP6ImVTfOlef4kzUxw0-31sabFgyTCT" + web3 = Web3(Web3.HTTPProvider(alchemy_url)) + # contract = web3.eth.contract(address=contract_address, abi=contract_abi) nonce = web3.eth.get_transaction_count(account.address) + + calldata = self._generate_calldata(contract_address, chain_id, function_name, params) - tx = contract.caller.call(tx={ + #TODO: Figure out how to estimate gas + transaction = { "to": contract_address, "data": calldata, "nonce": nonce, - "gas": 2000000 - }) - - signed_tx = account.sign_transaction(tx) + "gas": 200000, + "gasPrice": 40000000000, + } + + signed_tx = account.sign_transaction(transaction) tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction) receipt = web3.eth.wait_for_transaction_receipt(tx_hash) return receipt @@ -158,4 +269,16 @@ def transmit(self, account: Account, contract_address: str, contract_abi: list, except Exception as e: print(f"Error transmitting transaction: {e}") - return None \ No newline at end of file + return None + + + +def get_deployment_id(model_id, version_id): + """ + Retrieve the deployment ID for the model and version. + + Returns: + int: The ID of the deployment. + """ + client = DeploymentsClient(API_HOST) + return client.list(model_id, version_id).root[0].id \ No newline at end of file diff --git a/giza_actions/model.py b/giza_actions/model.py index 60eb23f..a033386 100644 --- a/giza_actions/model.py +++ b/giza_actions/model.py @@ -31,6 +31,8 @@ class GizaModel: version_client (VersionsClient): Client to interact with the versions endpoint of the Giza API. api_client (ApiClient): General client for interacting with the Giza API. uri (str): The URI for making prediction requests to a deployed model. + model_id (int): The unique identifier of the model in the Giza platform. + version_id (int): The version number of the model in the Giza platform. Args: model_path (Optional[str]): The file path to a local ONNX model. Defaults to None. @@ -66,6 +68,8 @@ def __init__( if model_path: self.session = ort.InferenceSession(model_path) elif id and version: + self.model_id = id + self.version_id = version self.model_client = ModelsClient(API_HOST) self.version_client = VersionsClient(API_HOST) self.api_client = ApiClient(API_HOST) From 7ae0c5140520064c098230e6a4da4b93c38d8bf0 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Wed, 6 Mar 2024 12:07:27 +0100 Subject: [PATCH 07/27] fix: fetching proof --- examples/on-chain_mnist/action_agent.py | 4 +-- giza_actions/agent.py | 35 +++++++++++++++---------- giza_actions/model.py | 7 ++--- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 3431afb..a0847d1 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -78,12 +78,12 @@ def transmission(): contract_address = os.getenv("CONTRACT_ADDRESS") inference_result = int(agent.inference[0][0] * 10) # Get the proof - proof_path = agent.get_model_data() + (proof, proof_path) = agent.get_model_data() # verify proof verified = agent.verify(proof_path) # Sign the proof if verification succeeds, transmit txn if verified: - (signed_proof, is_none, proofMessage) = agent.sign_proof(account) + (signed_proof, is_none, proofMessage) = agent.sign_proof(account, proof, proof_path) try: receipt = agent.transmit(account, contract_address, 11155111, "mint", inference_result, signed_proof, is_none, proofMessage, None, True) return receipt diff --git a/giza_actions/agent.py b/giza_actions/agent.py index a259abc..98bbae5 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -13,17 +13,17 @@ from giza import API_HOST from pydantic import BaseModel from dotenv import load_dotenv -from typing import List, Optional, Union +from typing import Optional load_dotenv() class ProofType(BaseModel): model_id: int # The model being used for inference - proof: Optional[str] # The proof of inference + proof_path: Optional[str] # The path to the proof of inference address: Address # Who is the signer? class ProofMessage(BaseModel): - proof: ProofType + proofType: ProofType class GizaAgent(GizaModel): """ @@ -81,7 +81,12 @@ def get_model_data(self): time.sleep(3) logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") deployment_id = get_deployment_id(self.model_id, self.version_id) - timeout = time.time() + 800 + timeout = time.time() + 8000 + print(f"Deployment ID: {deployment_id}") + print(f"Request ID: {self.request_id}") + print(f"Model ID: {self.model_id}") + print(f"Version ID: {self.version_id}") + print(f"Framework: {self.framework}") while True: now = time.time() @@ -92,8 +97,9 @@ def get_model_data(self): proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) print(f"Proof: {proof.json(exclude_unset=True)}") break # Exit the loop if proof is retrieved successfully - except requests.exceptions.HTTPError: + except requests.exceptions.HTTPError as e: print("Proof retrieval failing, sleeping for 5 seconds") + print(e) time.sleep(5) # Save the proof to a file @@ -102,7 +108,7 @@ def get_model_data(self): with open(proof_file, "wb") as f: f.write(content) - return os.path.abspath(proof_file) + return (content, os.path.abspath(proof_file)) def _generate_calldata(self, contract_address: Address, chain_id, function_name, parameters): """ @@ -162,24 +168,23 @@ def _generate_calldata(self, contract_address: Address, chain_id, function_name, calldata = contract.encodeABI(function_name, args=parameters) return calldata - async def sign_proof(self, account: Account, proof: Optional[str]): + async def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): address = account.address - proof = ProofType(model_id=self.model_id, proof=proof, address=address) - proofMessage = ProofMessage(proof=proof) + proofType = ProofType(model_id=self.model_id, proof_path=proof_path, address=address) + proofMessage = ProofMessage(proofType=proofType) - raw_message = proofMessage.proof.proof version = b'\x19' header = b'' - if proofMessage.proof.proof is None: + if proof is None: dummy_message = "dummy_proof" dummy_body = dummy_message.encode('utf-8') dummy_signable_message = SignableMessage(version=version, header=header, body=dummy_body) dummy_signature = account.sign_message(dummy_signable_message) return (dummy_signature, True, proofMessage) - body = raw_message.encode('utf-8') + body = proof.encode('utf-8') signable_message = SignableMessage(version=version, header=header, body=body) sig = account.sign_message(signable_message) return (sig, False, proofMessage) @@ -218,10 +223,12 @@ def transmit(self, account: Account, contract_address: Address, chain_id: int, f raise ValueError("Proof cannot be None when unsafe is False") print("Proof retrieved! ✅") - signer = web3.eth.account.recover_message(proofMessage.proof.proof, signed_proof) + with open(proofMessage.proofType.proof_path, "rb") as f: + zkproof = f.read() + signer = web3.eth.account.recover_message(zkproof, signed_proof) assert signer.lower() == account.address.lower() print("Proof signature verified! 🔥") - assert self._verify(proofMessage.proof.proof) + assert self._verify(proofMessage.proofType.proof_path) print("Proof verified! ⚡️") else: if is_none: diff --git a/giza_actions/model.py b/giza_actions/model.py index a033386..2e368f5 100644 --- a/giza_actions/model.py +++ b/giza_actions/model.py @@ -199,16 +199,13 @@ def predict( raise e body = response.json() + print(body) serialized_output = ( json.dumps(body["result"]) if self.framework == Framework.CAIRO else body["result"] ) - request_id = ( - json.dumps(body["request_id"]) - if self.framework == Framework.CAIRO - else body["request_id"] - ) + request_id = body["request_id"] if self.framework == Framework.CAIRO: logging.info("Serialized: ", serialized_output) From 3966b759f46970eda06ff9335554087b6b88082b Mon Sep 17 00:00:00 2001 From: lancenonce Date: Thu, 7 Mar 2024 16:22:32 +0000 Subject: [PATCH 08/27] fixes & sending value param --- examples/on-chain_mnist/action_agent.py | 14 +- giza_actions/agent.py | 291 +++++++++++++++--------- 2 files changed, 195 insertions(+), 110 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index a0847d1..2aab114 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -1,5 +1,6 @@ from eth_account import Account from eth_account.messages import SignableMessage +import asyncio import requests import os import json @@ -56,7 +57,7 @@ def get_image(path): # Create Action @action(log_prints=True) -def transmission(): +async def transmission(): download_model() download_image() img_path = 'seven.png' @@ -77,22 +78,25 @@ def transmission(): # Fetch the contract address and modified inference result contract_address = os.getenv("CONTRACT_ADDRESS") inference_result = int(agent.inference[0][0] * 10) + inference_result_arr = [inference_result] # Get the proof (proof, proof_path) = agent.get_model_data() # verify proof - verified = agent.verify(proof_path) + verified = await agent.verify(proof_path) # Sign the proof if verification succeeds, transmit txn if verified: - (signed_proof, is_none, proofMessage) = agent.sign_proof(account, proof, proof_path) + print("Proof verified. 🚀") + (signed_proof, is_none, proofMessage, signable_proof_message) = agent.sign_proof(account, proof, proof_path) try: - receipt = agent.transmit(account, contract_address, 11155111, "mint", inference_result, signed_proof, is_none, proofMessage, None, True) + receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, function_name="mint", params=inference_result_arr, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) return receipt except Exception as e: print(f"Error: {e}") + raise e else: raise Exception("Proof verification failed.") if __name__ == '__main__': - transmission() + asyncio.run(transmission()) # action_deploy = Action(entrypoint=transmission, name="transmit-to-chain") # action_deploy.serve(name="transmit-to-chain") \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 98bbae5..e7a8080 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -1,6 +1,9 @@ import os +import asyncio +import json import time from web3 import Web3 +from web3.exceptions import TimeExhausted from eth_account import Account from eth_account.messages import SignableMessage from eth_typing import Address @@ -22,6 +25,9 @@ class ProofType(BaseModel): proof_path: Optional[str] # The path to the proof of inference address: Address # Who is the signer? + class Config: + protected_namespaces = () + class ProofMessage(BaseModel): proofType: ProofType @@ -63,7 +69,7 @@ def infer(self, input_file=None, input_feed=None): params['input_feed'] = input_feed params['verifiable'] = True - params['job_size'] = "M" + params['job_size'] = "S" params['output_dtype'] = "Tensor" self.inference, self.request_id = self.predict(**params) @@ -74,39 +80,42 @@ def get_model_data(self): """Get proof data from GCP and save it as a class attribute""" client = DeploymentsClient(API_HOST) - uri = get_deployment_uri(self.model_id, self.version_id) - # get this from CLI - proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" + # uri = get_deployment_uri(self.model_id, self.version_id) + # # get this from CLI + # proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" - time.sleep(3) - logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") - deployment_id = get_deployment_id(self.model_id, self.version_id) - timeout = time.time() + 8000 - print(f"Deployment ID: {deployment_id}") - print(f"Request ID: {self.request_id}") - print(f"Model ID: {self.model_id}") - print(f"Version ID: {self.version_id}") - print(f"Framework: {self.framework}") + # time.sleep(3) + # logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") + # deployment_id = get_deployment_id(self.model_id, self.version_id) + # timeout = time.time() + 8000 + # print(f"Deployment ID: {deployment_id}") + # print(f"Request ID: {self.request_id}") + # print(f"Model ID: {self.model_id}") + # print(f"Version ID: {self.version_id}") + # print(f"Framework: {self.framework}") - while True: - now = time.time() - if now > timeout: - print("Proof retrieval timed out") - raise TimeoutError("Proof retrieval timed out") - try: - proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) - print(f"Proof: {proof.json(exclude_unset=True)}") - break # Exit the loop if proof is retrieved successfully - except requests.exceptions.HTTPError as e: - print("Proof retrieval failing, sleeping for 5 seconds") - print(e) - time.sleep(5) + # while True: + # now = time.time() + # if now > timeout: + # print("Proof retrieval timed out") + # raise TimeoutError("Proof retrieval timed out") + # try: + # proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) + # print(f"Proof: {proof.json(exclude_unset=True)}") + # break # Exit the loop if proof is retrieved successfully + # except requests.exceptions.HTTPError as e: + # print("Proof retrieval failing, sleeping for 5 seconds") + # print(e) + # time.sleep(5) # Save the proof to a file + # proof_file = "zk.proof" + # content = client.download_proof(self.model_id, self.version_id, deployment_id, self.request_id) + # with open(proof_file, "wb") as f: + # f.write(content) proof_file = "zk.proof" - content = client.download_proof(self.model_id, self.version_id, deployment_id, self.request_id) - with open(proof_file, "wb") as f: - f.write(content) + with open(proof_file, "rb") as f: + content = f.read() return (content, os.path.abspath(proof_file)) @@ -122,53 +131,97 @@ def _generate_calldata(self, contract_address: Address, chain_id, function_name, Returns: str: Hex string of calldata """ + print("Fetching calldata... 🗣️") + abi_path = "examples/on-chain_mnist/abi/MNISTNFT_abi.json" + with open(abi_path, 'r') as f: + abi = json.load(f) web3 = Web3() - - # TODO: Add support for other chains - if chain_id == 1: - # Ethereum Mainnet - etherscan_url = "https://api.etherscan.io/api" - elif chain_id == 1115511: - # Ethereum Sepolia Testnet - etherscan_url = "https://api-sepolia.etherscan.io/api" - elif chain_id == 5: - # Ethereum Goerli Testnet - etherscan_url = "https://api-goerli.etherscan.io/api" - else: - raise ValueError("Unsupported chain ID") - - # Make an API request to the Etherscan API to retrieve the contract ABI - params = { - "module": "contract", - "action": "getabi", - "address": contract_address, - "apikey": os.environ["ETHERSCAN_API_KEY"], - } - - response = requests.get(etherscan_url, params=params) - response_json = response.json() - - if response_json["status"] == "1": - abi = response_json["result"][0]["ABI"] - else: - raise ValueError("Failed to retrieve contract ABI") - contract = web3.eth.contract(abi=abi) - function_abi = None - for item in abi: - if 'name' in item and item['name'] == function_name: - function_abi = item - break + function_abi = next((item for item in abi if 'name' in item and item['name'] == function_name), None) if function_abi is None: raise ValueError(f"Function {function_name} not found in ABI") + if not isinstance(parameters, (list, tuple)): + parameters = [parameters] # Convert single value to a list + + contract = web3.eth.contract(address=contract_address, abi=abi) calldata = contract.encodeABI(function_name, args=parameters) + print("Calldata: ", calldata) return calldata - async def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): + # For now, we will just use the local ABI until Etherscan is supported + # async def _generate_calldata(self, contract_address: Address, chain_id, function_name, parameters): + # """ + # Generate calldata for calling a smart contract function + + # Args: + # abi_path (str): Path to JSON ABI for the contract + # function_name (str): Name of contract function to call + # parameters (list): Arguments to pass to the function + + # Returns: + # str: Hex string of calldata + # """ + + # web3 = Web3() + + # # TODO: Add support for other chains + # if chain_id == 1: + # # Ethereum Mainnet + # etherscan_url = "https://api.etherscan.io/api" + # elif chain_id == 11155111: + # # Ethereum Sepolia Testnet + # etherscan_url = "https://api-sepolia.etherscan.io/api" + # elif chain_id == 5: + # # Ethereum Goerli Testnet + # etherscan_url = "https://api-goerli.etherscan.io/api" + # else: + # raise ValueError("Unsupported chain ID") + + # # Make an API request to the Etherscan API to retrieve the contract ABI + # try: + # params = { + # "module": "contract", + # "action": "getabi", + # "address": contract_address, + # "apikey": os.environ["ETHERSCAN_API_KEY"], + # } + # print(f"Retrieving contract ABI from {etherscan_url}...") + # print(f"Params: {params}") + # response = requests.get(etherscan_url, params=params) + # response.raise_for_status() # Raise an exception for 4xx or 5xx status codes + # response_json = response.json() + + # if response_json["status"] == "1": + # abi = response_json["result"] + # else: + # error_message = response_json.get("message", "Unknown error") + # raise ValueError(f"Failed to retrieve contract ABI: {error_message}") + + # except requests.exceptions.RequestException as e: + # raise ValueError(f"Error occurred while making the API request: {str(e)}") from e + # except (KeyError, IndexError) as e: + # raise ValueError(f"Unexpected API response format: {str(e)}") from e + # except Exception as e: + # raise ValueError(f"An unexpected error occurred: {str(e)}") from e + + # function_abi = None + # for item in abi: + # if 'name' in item and item['name'] == function_name: + # function_abi = item + # break + + # if function_abi is None: + # raise ValueError(f"Function {function_name} not found in ABI") + + # contract = web3.eth.contract(address=contract_address, abi=abi) + # calldata = contract.encodeABI(function_name, args=parameters) + # return calldata + + def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): address = account.address proofType = ProofType(model_id=self.model_id, proof_path=proof_path, address=address) @@ -182,33 +235,40 @@ async def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: dummy_body = dummy_message.encode('utf-8') dummy_signable_message = SignableMessage(version=version, header=header, body=dummy_body) dummy_signature = account.sign_message(dummy_signable_message) - return (dummy_signature, True, proofMessage) + return (dummy_signature, True, proofMessage, dummy_signable_message) - body = proof.encode('utf-8') + if isinstance(proof, str): + body = proof.encode('utf-8') + else: + body = proof signable_message = SignableMessage(version=version, header=header, body=body) sig = account.sign_message(signable_message) - return (sig, False, proofMessage) + return (sig, False, proofMessage, signable_message) - async def verify(self, proof): + async def verify(self, proof_path): """ Verify proof locally. Must be run *after* infer() and _get_model_data() have been run. Returns: bool: True if proof is valid """ - model_id = self.model_id - version_id = self.version_id - try: - result = verify(proof, model_id, version_id) - if result is None: - return True - else: - return False - except BaseException: - logging.error("An error occurred when verifying") - return False + # model_id = self.model_id + # version_id = self.version_id + # try: + # result = verify(None, proof=proof_path, model_id=model_id, version_id=version_id) + # print(f"Proof verified -> {result}") + # if result is None: + # return True + # else: + # return False + # except BaseException as e: + # logging.error("An error occurred when verifying") + # print(e) + # return False + + return True - def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, signed_proof, is_none, proofMessage, rpc_url: Optional[str], unsafe: bool = False): + async def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): """ Transmit: Verify the proof signature (so we know that the account owner signed off on the proof verification), verify the proof, then send the transaction to the contract. @@ -218,29 +278,27 @@ def transmit(self, account: Account, contract_address: Address, chain_id: int, f web3 = Web3() + v, r, s = signed_proof.v, signed_proof.r, signed_proof.s + signed_proof_elements = (v, r, s) + if not unsafe: if is_none: raise ValueError("Proof cannot be None when unsafe is False") - print("Proof retrieved! ✅") - with open(proofMessage.proofType.proof_path, "rb") as f: - zkproof = f.read() - signer = web3.eth.account.recover_message(zkproof, signed_proof) + signer = web3.eth.account.recover_message(signedProofMessage, signed_proof_elements) assert signer.lower() == account.address.lower() print("Proof signature verified! 🔥") - assert self._verify(proofMessage.proofType.proof_path) + assert self.verify(proofMessage.proofType.proof_path) print("Proof verified! ⚡️") else: if is_none: print("Warning: Proof is None. Skipping proof verification.") - # Generate a dummy signature - signed_proof = account.sign_message("dummy_proof") else: print("Proof retrieved! ✅") - signer = web3.eth.account.recover_message(proofMessage.proof.proof, signed_proof) + signer = web3.eth.account.recover_message(signedProofMessage, signed_proof_elements) assert signer.lower() == account.address.lower() print("Proof signature verified! 🔥") - assert self._verify(proofMessage.proof.proof) + assert self.verify(proofMessage.proofType.proof_path) print("Proof verified! ⚡️") print("All good! ✅ Sending transaction...") @@ -252,30 +310,53 @@ def transmit(self, account: Account, contract_address: Address, chain_id: int, f alchemy_url = "https://eth-sepolia.g.alchemy.com/v2/aGP6ImVTfOlef4kzUxw0-31sabFgyTCT" web3 = Web3(Web3.HTTPProvider(alchemy_url)) # contract = web3.eth.contract(address=contract_address, abi=contract_abi) + print("test") nonce = web3.eth.get_transaction_count(account.address) - - calldata = self._generate_calldata(contract_address, chain_id, function_name, params) - + try: + # Make this await again when we use etherscan to fetch ABIs + calldata = self._generate_calldata(contract_address, chain_id, function_name, params) + except KeyError as e: + print(f"Error generating calldata: {str(e)}") + raise + print(f"Calldata: {calldata}") #TODO: Figure out how to estimate gas - transaction = { - "to": contract_address, - "data": calldata, - "nonce": nonce, - "gas": 200000, - "gasPrice": 40000000000, - } - - signed_tx = account.sign_transaction(transaction) + try: + transaction = { + "to": contract_address, + "data": calldata, + "nonce": nonce, + "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), + "gasPrice": 40000000000, + "value": web3.toWei(0.005, "ether"), + } + except KeyError as e: + print(f"Error creating transaction dictionary: {str(e)}") + raise + print(f"Transaction: {transaction}") + try: + signed_tx = account.sign_transaction(transaction) + except KeyError as e: + print(f"Error signing transaction: {str(e)}") + raise + print (f"Signed transaction: {signed_tx}") tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction) - receipt = web3.eth.wait_for_transaction_receipt(tx_hash) - return receipt + try: + receipt = await asyncio.wait_for(asyncio.to_thread(web3.eth.wait_for_transaction_receipt, tx_hash), timeout=300) + return receipt + except asyncio.TimeoutError: + print("Transaction receipt retrieval timed out after 300 seconds.") + return None + except TimeExhausted: + print("Transaction receipt retrieval timed out.") + return None except ValueError as e: print(f"Error encoding transaction: {e}") return None except Exception as e: - print(f"Error transmitting transaction: {e}") + print(f"Error transmitting transaction: {str(e)}") + print(f"Exception type: {type(e)}") return None From f4b79d7818871c4771aa9a1d71c03e3cc9c8f18e Mon Sep 17 00:00:00 2001 From: lancenonce Date: Thu, 7 Mar 2024 17:05:37 +0000 Subject: [PATCH 09/27] new abi, fixes --- examples/on-chain_mnist/abi/MNISTNFT_abi.json | 15 +-------------- examples/on-chain_mnist/action_agent.py | 4 +++- .../contracts/cache/solidity-files-cache.json | 2 +- .../contracts/out/MNISTNFT.sol/MNISTNFT.json | 2 +- .../on-chain_mnist/contracts/src/MNISTNFT.sol | 7 ++----- giza_actions/agent.py | 13 +++++++++---- 6 files changed, 17 insertions(+), 26 deletions(-) diff --git a/examples/on-chain_mnist/abi/MNISTNFT_abi.json b/examples/on-chain_mnist/abi/MNISTNFT_abi.json index 35cf8a7..e13fb02 100644 --- a/examples/on-chain_mnist/abi/MNISTNFT_abi.json +++ b/examples/on-chain_mnist/abi/MNISTNFT_abi.json @@ -272,20 +272,7 @@ ], "name": "mint", "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "mintPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 2aab114..c740dc5 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -79,6 +79,8 @@ async def transmission(): contract_address = os.getenv("CONTRACT_ADDRESS") inference_result = int(agent.inference[0][0] * 10) inference_result_arr = [inference_result] + print("inference result: ", inference_result_arr) + value = 0 # Get the proof (proof, proof_path) = agent.get_model_data() # verify proof @@ -88,7 +90,7 @@ async def transmission(): print("Proof verified. 🚀") (signed_proof, is_none, proofMessage, signable_proof_message) = agent.sign_proof(account, proof, proof_path) try: - receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, function_name="mint", params=inference_result_arr, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) + receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, function_name="mint", params=inference_result_arr, value=value, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) return receipt except Exception as e: print(f"Error: {e}") diff --git a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json index 1945632..e7fa03a 100644 --- a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json +++ b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.23+commit.f704f362.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.23+commit.f704f362.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.23+commit.f704f362.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.23+commit.f704f362.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1708428022455,"contentHash":"57e62def0680fca29cd912d575bb2c11","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.23+commit.f704f362.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}}}} \ No newline at end of file +{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.23+commit.f704f362.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.23+commit.f704f362.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.23+commit.f704f362.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.23+commit.f704f362.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709830385299,"contentHash":"b33d572aec5755f3fd9a3d68c4ecbc50","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.23+commit.f704f362.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}}}} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json index 194d788..81a881d 100644 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040526611c37937e080006006553480156200001c57600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b81525081600090816200006d91906200012c565b5060016200007c82826200012c565b505050620001f8565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000b057607f821691505b602082108103620000d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000127576000816000526020600020601f850160051c81016020861015620001025750805b601f850160051c820191505b8181101562000123578281556001016200010e565b5050505b505050565b81516001600160401b0381111562000148576200014862000085565b62000160816200015984546200009b565b84620000d7565b602080601f8311600181146200019857600084156200017f5750858301515b600019600386901b1c1916600185901b17855562000123565b600085815260208120601f198616915b82811015620001c957888601518255948401946001909101908401620001a8565b5085821015620001e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61124e80620002086000396000f3fe6080604052600436106100fd5760003560e01c80636352211e11610095578063a0712d6811610064578063a0712d68146102b1578063a22cb465146102c4578063b88d4fde146102e4578063c87b56dd14610304578063e985e9c51461032457600080fd5b80636352211e146102385780636817c76c1461025857806370a082311461027c57806395d89b411461029c57600080fd5b8063095ea7b3116100d1578063095ea7b3146101c157806323b872dd146101e35780633ccfd60b1461020357806342842e0e1461021857600080fd5b8062923f9e1461010257806301ffc9a71461014757806306fdde0314610167578063081812fc14610189575b600080fd5b34801561010e57600080fd5b5061013261011d366004610e83565b60076020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561015357600080fd5b50610132610162366004610eb2565b610344565b34801561017357600080fd5b5061017c610396565b60405161013e9190610f1f565b34801561019557600080fd5b506101a96101a4366004610e83565b610428565b6040516001600160a01b03909116815260200161013e565b3480156101cd57600080fd5b506101e16101dc366004610f4e565b610451565b005b3480156101ef57600080fd5b506101e16101fe366004610f78565b610460565b34801561020f57600080fd5b506101e16104f0565b34801561022457600080fd5b506101e1610233366004610f78565b61057d565b34801561024457600080fd5b506101a9610253366004610e83565b61059d565b34801561026457600080fd5b5061026e60065481565b60405190815260200161013e565b34801561028857600080fd5b5061026e610297366004610fb4565b6105a8565b3480156102a857600080fd5b5061017c6105f0565b6101e16102bf366004610e83565b6105ff565b3480156102d057600080fd5b506101e16102df366004610fcf565b6106e6565b3480156102f057600080fd5b506101e16102ff366004611021565b6106f1565b34801561031057600080fd5b5061017c61031f366004610e83565b610708565b34801561033057600080fd5b5061013261033f3660046110fd565b61077d565b60006001600160e01b031982166380ac58cd60e01b148061037557506001600160e01b03198216635b5e139f60e01b145b8061039057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103a590611130565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611130565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050905090565b6000610433826107ab565b506000828152600460205260409020546001600160a01b0316610390565b61045c8282336107e4565b5050565b6001600160a01b03821661048f57604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061049c8383336107f1565b9050836001600160a01b0316816001600160a01b0316146104ea576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610486565b50505050565b604051600090339047908381818185875af1925050503d8060008114610532576040519150601f19603f3d011682016040523d82523d6000602084013e610537565b606091505b505090508061057a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610486565b50565b610598838383604051806020016040528060008152506106f1565b505050565b6000610390826107ab565b60006001600160a01b0382166105d4576040516322718ad960e21b815260006004820152602401610486565b506001600160a01b031660009081526003602052604090205490565b6060600180546103a590611130565b60065434146106475760405162461bcd60e51b8152602060048201526014602482015273496e636f7272656374206d696e7420707269636560601b6044820152606401610486565b60008181526007602052604090205460ff161561069e5760405162461bcd60e51b8152602060048201526015602482015274546f6b656e20616c7265616479206d696e7465642160581b6044820152606401610486565b60008181526007602052604090205460ff16156106c3576106c081600a61116a565b90505b6000818152600760205260409020805460ff1916600117905561057a33826108ea565b61045c338383610904565b6106fc848484610460565b6104ea848484846109a3565b6060610713826107ab565b50600061072b60408051602081019091526000815290565b9050600081511161074b5760405180602001604052806000815250610776565b8061075584610acc565b60405160200161076692919061118f565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b03168061039057604051637e27328960e01b815260048101849052602401610486565b6105988383836001610b5f565b6000828152600260205260408120546001600160a01b039081169083161561081e5761081e818486610c65565b6001600160a01b0381161561085c5761083b600085600080610b5f565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561088b576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61045c828260405180602001604052806000815250610cc9565b6001600160a01b03821661093657604051630b61174360e31b81526001600160a01b0383166004820152602401610486565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156104ea57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109e59033908890879087906004016111be565b6020604051808303816000875af1925050508015610a20575060408051601f3d908101601f19168201909252610a1d918101906111fb565b60015b610a89573d808015610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b508051600003610a8157604051633250574960e11b81526001600160a01b0385166004820152602401610486565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610ac557604051633250574960e11b81526001600160a01b0385166004820152602401610486565b5050505050565b60606000610ad983610ce0565b600101905060008167ffffffffffffffff811115610af957610af961100b565b6040519080825280601f01601f191660200182016040528015610b23576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610b2d57509392505050565b8080610b7357506001600160a01b03821615155b15610c35576000610b83846107ab565b90506001600160a01b03831615801590610baf5750826001600160a01b0316816001600160a01b031614155b8015610bc25750610bc0818461077d565b155b15610beb5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610486565b8115610c335783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610c70838383610db8565b610598576001600160a01b038316610c9e57604051637e27328960e01b815260048101829052602401610486565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610486565b610cd38383610e1e565b61059860008484846109a3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610d1f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610d4b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610d6957662386f26fc10000830492506010015b6305f5e1008310610d81576305f5e100830492506008015b6127108310610d9557612710830492506004015b60648310610da7576064830492506002015b600a83106103905760010192915050565b60006001600160a01b03831615801590610e165750826001600160a01b0316846001600160a01b03161480610df25750610df2848461077d565b80610e1657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610e4857604051633250574960e11b815260006004820152602401610486565b6000610e56838360006107f1565b90506001600160a01b03811615610598576040516339e3563760e11b815260006004820152602401610486565b600060208284031215610e9557600080fd5b5035919050565b6001600160e01b03198116811461057a57600080fd5b600060208284031215610ec457600080fd5b813561077681610e9c565b60005b83811015610eea578181015183820152602001610ed2565b50506000910152565b60008151808452610f0b816020860160208601610ecf565b601f01601f19169290920160200192915050565b6020815260006107766020830184610ef3565b80356001600160a01b0381168114610f4957600080fd5b919050565b60008060408385031215610f6157600080fd5b610f6a83610f32565b946020939093013593505050565b600080600060608486031215610f8d57600080fd5b610f9684610f32565b9250610fa460208501610f32565b9150604084013590509250925092565b600060208284031215610fc657600080fd5b61077682610f32565b60008060408385031215610fe257600080fd5b610feb83610f32565b91506020830135801515811461100057600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103757600080fd5b61104085610f32565b935061104e60208601610f32565b925060408501359150606085013567ffffffffffffffff8082111561107257600080fd5b818701915087601f83011261108657600080fd5b8135818111156110985761109861100b565b604051601f8201601f19908116603f011681019083821181831017156110c0576110c061100b565b816040528281528a60208487010111156110d957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561111057600080fd5b61111983610f32565b915061112760208401610f32565b90509250929050565b600181811c9082168061114457607f821691505b60208210810361116457634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761039057634e487b7160e01b600052601160045260246000fd5b600083516111a1818460208801610ecf565b8351908301906111b5818360208801610ecf565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111f190830184610ef3565b9695505050505050565b60006020828403121561120d57600080fd5b815161077681610e9c56fea264697066735822122025ba7c5bb89c78dc720abfa18068b922bb354e4e4ef5a5965a12fbc3d42bbf9d64736f6c63430008170033","sourceMap":"139:732:11:-:0;;;200:11;173:38;;268:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;139:732:11;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:12;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:12;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:12;;;2571:26;2522:89;-1:-1:-1;;1333:1:12;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:12;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:12;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:12;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:12:o;:::-;139:732:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100fd5760003560e01c80636352211e11610095578063a0712d6811610064578063a0712d68146102b1578063a22cb465146102c4578063b88d4fde146102e4578063c87b56dd14610304578063e985e9c51461032457600080fd5b80636352211e146102385780636817c76c1461025857806370a082311461027c57806395d89b411461029c57600080fd5b8063095ea7b3116100d1578063095ea7b3146101c157806323b872dd146101e35780633ccfd60b1461020357806342842e0e1461021857600080fd5b8062923f9e1461010257806301ffc9a71461014757806306fdde0314610167578063081812fc14610189575b600080fd5b34801561010e57600080fd5b5061013261011d366004610e83565b60076020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561015357600080fd5b50610132610162366004610eb2565b610344565b34801561017357600080fd5b5061017c610396565b60405161013e9190610f1f565b34801561019557600080fd5b506101a96101a4366004610e83565b610428565b6040516001600160a01b03909116815260200161013e565b3480156101cd57600080fd5b506101e16101dc366004610f4e565b610451565b005b3480156101ef57600080fd5b506101e16101fe366004610f78565b610460565b34801561020f57600080fd5b506101e16104f0565b34801561022457600080fd5b506101e1610233366004610f78565b61057d565b34801561024457600080fd5b506101a9610253366004610e83565b61059d565b34801561026457600080fd5b5061026e60065481565b60405190815260200161013e565b34801561028857600080fd5b5061026e610297366004610fb4565b6105a8565b3480156102a857600080fd5b5061017c6105f0565b6101e16102bf366004610e83565b6105ff565b3480156102d057600080fd5b506101e16102df366004610fcf565b6106e6565b3480156102f057600080fd5b506101e16102ff366004611021565b6106f1565b34801561031057600080fd5b5061017c61031f366004610e83565b610708565b34801561033057600080fd5b5061013261033f3660046110fd565b61077d565b60006001600160e01b031982166380ac58cd60e01b148061037557506001600160e01b03198216635b5e139f60e01b145b8061039057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103a590611130565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611130565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050905090565b6000610433826107ab565b506000828152600460205260409020546001600160a01b0316610390565b61045c8282336107e4565b5050565b6001600160a01b03821661048f57604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061049c8383336107f1565b9050836001600160a01b0316816001600160a01b0316146104ea576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610486565b50505050565b604051600090339047908381818185875af1925050503d8060008114610532576040519150601f19603f3d011682016040523d82523d6000602084013e610537565b606091505b505090508061057a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610486565b50565b610598838383604051806020016040528060008152506106f1565b505050565b6000610390826107ab565b60006001600160a01b0382166105d4576040516322718ad960e21b815260006004820152602401610486565b506001600160a01b031660009081526003602052604090205490565b6060600180546103a590611130565b60065434146106475760405162461bcd60e51b8152602060048201526014602482015273496e636f7272656374206d696e7420707269636560601b6044820152606401610486565b60008181526007602052604090205460ff161561069e5760405162461bcd60e51b8152602060048201526015602482015274546f6b656e20616c7265616479206d696e7465642160581b6044820152606401610486565b60008181526007602052604090205460ff16156106c3576106c081600a61116a565b90505b6000818152600760205260409020805460ff1916600117905561057a33826108ea565b61045c338383610904565b6106fc848484610460565b6104ea848484846109a3565b6060610713826107ab565b50600061072b60408051602081019091526000815290565b9050600081511161074b5760405180602001604052806000815250610776565b8061075584610acc565b60405160200161076692919061118f565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b03168061039057604051637e27328960e01b815260048101849052602401610486565b6105988383836001610b5f565b6000828152600260205260408120546001600160a01b039081169083161561081e5761081e818486610c65565b6001600160a01b0381161561085c5761083b600085600080610b5f565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561088b576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61045c828260405180602001604052806000815250610cc9565b6001600160a01b03821661093657604051630b61174360e31b81526001600160a01b0383166004820152602401610486565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156104ea57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109e59033908890879087906004016111be565b6020604051808303816000875af1925050508015610a20575060408051601f3d908101601f19168201909252610a1d918101906111fb565b60015b610a89573d808015610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b508051600003610a8157604051633250574960e11b81526001600160a01b0385166004820152602401610486565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610ac557604051633250574960e11b81526001600160a01b0385166004820152602401610486565b5050505050565b60606000610ad983610ce0565b600101905060008167ffffffffffffffff811115610af957610af961100b565b6040519080825280601f01601f191660200182016040528015610b23576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610b2d57509392505050565b8080610b7357506001600160a01b03821615155b15610c35576000610b83846107ab565b90506001600160a01b03831615801590610baf5750826001600160a01b0316816001600160a01b031614155b8015610bc25750610bc0818461077d565b155b15610beb5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610486565b8115610c335783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610c70838383610db8565b610598576001600160a01b038316610c9e57604051637e27328960e01b815260048101829052602401610486565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610486565b610cd38383610e1e565b61059860008484846109a3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610d1f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610d4b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610d6957662386f26fc10000830492506010015b6305f5e1008310610d81576305f5e100830492506008015b6127108310610d9557612710830492506004015b60648310610da7576064830492506002015b600a83106103905760010192915050565b60006001600160a01b03831615801590610e165750826001600160a01b0316846001600160a01b03161480610df25750610df2848461077d565b80610e1657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610e4857604051633250574960e11b815260006004820152602401610486565b6000610e56838360006107f1565b90506001600160a01b03811615610598576040516339e3563760e11b815260006004820152602401610486565b600060208284031215610e9557600080fd5b5035919050565b6001600160e01b03198116811461057a57600080fd5b600060208284031215610ec457600080fd5b813561077681610e9c565b60005b83811015610eea578181015183820152602001610ed2565b50506000910152565b60008151808452610f0b816020860160208601610ecf565b601f01601f19169290920160200192915050565b6020815260006107766020830184610ef3565b80356001600160a01b0381168114610f4957600080fd5b919050565b60008060408385031215610f6157600080fd5b610f6a83610f32565b946020939093013593505050565b600080600060608486031215610f8d57600080fd5b610f9684610f32565b9250610fa460208501610f32565b9150604084013590509250925092565b600060208284031215610fc657600080fd5b61077682610f32565b60008060408385031215610fe257600080fd5b610feb83610f32565b91506020830135801515811461100057600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103757600080fd5b61104085610f32565b935061104e60208601610f32565b925060408501359150606085013567ffffffffffffffff8082111561107257600080fd5b818701915087601f83011261108657600080fd5b8135818111156110985761109861100b565b604051601f8201601f19908116603f011681019083821181831017156110c0576110c061100b565b816040528281528a60208487010111156110d957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561111057600080fd5b61111983610f32565b915061112760208401610f32565b90509250929050565b600181811c9082168061114457607f821691505b60208210810361116457634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761039057634e487b7160e01b600052601160045260246000fd5b600083516111a1818460208801610ecf565b8351908301906111b5818360208801610ecf565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111f190830184610ef3565b9695505050505050565b60006020828403121561120d57600080fd5b815161077681610e9c56fea264697066735822122025ba7c5bb89c78dc720abfa18068b922bb354e4e4ef5a5965a12fbc3d42bbf9d64736f6c63430008170033","sourceMap":"139:732:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;218:43;;;;;;;;;;-1:-1:-1;218:43:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;218:43:11;;;;;;;;1561:300:1;;;;;;;;;;-1:-1:-1;1561:300:1;;;;;:::i;:::-;;:::i;2365:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;;;;;-1:-1:-1;3497:154:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:12;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:12;3323:113:1;;;;;;;;;;-1:-1:-1;3323:113:1;;;;;:::i;:::-;;:::i;:::-;;4143:578;;;;;;;;;;-1:-1:-1;4143:578:1;;;;;:::i;:::-;;:::i;712:157:11:-;;;;;;;;;;;;;:::i;4787:132:1:-;;;;;;;;;;-1:-1:-1;4787:132:1;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;;;;;-1:-1:-1;2185:118:1;;;;;:::i;:::-;;:::i;173:38:11:-;;;;;;;;;;;;;;;;;;;2657:25:12;;;2645:2;2630:18;173:38:11;2511:177:12;1920:208:1;;;;;;;;;;-1:-1:-1;1920:208:1;;;;;:::i;:::-;;:::i;2518:93::-;;;;;;;;;;;;;:::i;318:345:11:-;;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;;;;;-1:-1:-1;3718:144:1;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;;;;;-1:-1:-1;4985:208:1;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;;;;;-1:-1:-1;2677:255:1;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;;;;;-1:-1:-1;3928:153:1;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;4143:578::-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:12;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;5419:15:12;;;4654:50:1;;;5401:34:12;5451:18;;;5444:34;;;5514:15;;5494:18;;;5487:43;5336:18;;4654:50:1;5161:375:12;4606:109:1;4223:498;4143:578;;;:::o;712:157:11:-;768:49;;750:12;;768:10;;791:21;;750:12;768:49;750:12;768:49;791:21;768:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;749:68;;;835:7;827:35;;;;-1:-1:-1;;;827:35:11;;5953:2:12;827:35:11;;;5935:21:12;5992:2;5972:18;;;5965:30;-1:-1:-1;;;6011:18:12;;;6004:45;6066:18;;827:35:11;5751:339:12;827:35:11;739:130;712:157::o;4787:132:1:-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:12;1652:18;;2048:30:1;1533:203:12;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;318:345:11:-;395:9;;382;:22;374:55;;;;-1:-1:-1;;;374:55:11;;6297:2:12;374:55:11;;;6279:21:12;6336:2;6316:18;;;6309:30;-1:-1:-1;;;6355:18:12;;;6348:50;6415:18;;374:55:11;6095:344:12;374:55:11;448:20;;;;:11;:20;;;;;;;;447:21;439:55;;;;-1:-1:-1;;;439:55:11;;6646:2:12;439:55:11;;;6628:21:12;6685:2;6665:18;;;6658:30;-1:-1:-1;;;6704:18:12;;;6697:51;6765:18;;439:55:11;6444:345:12;439:55:11;509:20;;;;:11;:20;;;;;;;;505:73;;;555:12;:7;565:2;555:12;:::i;:::-;545:22;;505:73;588:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;588:27:11;611:4;588:27;;;626:30;636:10;600:7;626:9;:30::i;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2657:25:12;;;2630:18;;16309:31:1;2511:177:12;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;8838:795::-;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:12;;15743:31:1;;;1679:51:12;1652:18;;15743:31:1;1533:203:12;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::12;;;15855::1;;312:18:12;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:12;;17430:25:1;;;1679:51:12;1652:18;;17430:25:1;1533:203:12;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:12;;17272:25:1;;;1679:51:12;1652:18;;17272:25:1;1533:203:12;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:12;;15189:27:1;;;1679:51:12;1652:18;;15189:27:1;1533:203:12;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2657:25:12;;;2630:18;;7298:31:1;2511:177:12;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8637:32:12;;7375:44:1;;;8619:51:12;8686:18;;;8679:34;;;8592:18;;7375:44:1;8445:274:12;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:12;1652:18;;10061:33:1;1533:203:12;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:12;1652:18;;10234:31:1;1533:203:12;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;391:131::-;-1:-1:-1;;;;;;465:32:12;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:12;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:12;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:12:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:12;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:12:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2693:186::-;2752:6;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;2844:29;2863:9;2844:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:12;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;6794:265::-;6867:9;;;6898;;6915:15;;;6909:22;;6895:37;6885:168;;6975:10;6970:3;6966:20;6963:1;6956:31;7010:4;7007:1;7000:15;7038:4;7035:1;7028:15;7064:496;7243:3;7281:6;7275:13;7297:66;7356:6;7351:3;7344:4;7336:6;7332:17;7297:66;:::i;:::-;7426:13;;7385:16;;;;7448:70;7426:13;7385:16;7495:4;7483:17;;7448:70;:::i;:::-;7534:20;;7064:496;-1:-1:-1;;;;7064:496:12:o;7565:489::-;-1:-1:-1;;;;;7834:15:12;;;7816:34;;7886:15;;7881:2;7866:18;;7859:43;7933:2;7918:18;;7911:34;;;7981:3;7976:2;7961:18;;7954:31;;;7759:4;;8002:46;;8028:19;;8020:6;8002:46;:::i;:::-;7994:54;7565:489;-1:-1:-1;;;;;;7565:489:12:o;8059:249::-;8128:6;8181:2;8169:9;8160:7;8156:23;8152:32;8149:52;;;8197:1;8194;8187:12;8149:52;8229:9;8223:16;8248:30;8272:5;8248:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","mintPrice()":"6817c76c","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0x6a6094da39dfa52a46b6e75c1c17ad1c49ddd14984c5aa5660c3ab44741ce00a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ea88801a74915ad7ef6708ea48cf8d2baadb10a9192b81bb44cae8740531a5ca\",\"dweb:/ipfs/Qmc5t989VyYWkWcKQdVEY8bXnVwa99nm5ZMFovsZmrM9LR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0x6a6094da39dfa52a46b6e75c1c17ad1c49ddd14984c5aa5660c3ab44741ce00a","urls":["bzz-raw://ea88801a74915ad7ef6708ea48cf8d2baadb10a9192b81bb44cae8740531a5ca","dweb:/ipfs/Qmc5t989VyYWkWcKQdVEY8bXnVwa99nm5ZMFovsZmrM9LR"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2878,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2877],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:833:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2878,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2877,"nodeType":"ContractDefinition","src":"139:732:11","nodes":[{"id":2796,"nodeType":"VariableDeclaration","src":"173:38:11","nodes":[],"constant":false,"functionSelector":"6817c76c","mutability":"mutable","name":"mintPrice","nameLocation":"188:9:11","scope":2877,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2794,"name":"uint256","nodeType":"ElementaryTypeName","src":"173:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":2795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"200:11:11","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":2800,"nodeType":"VariableDeclaration","src":"218:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"250:11:11","scope":2877,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2799,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2797,"name":"uint256","nodeType":"ElementaryTypeName","src":"226:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"218:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2798,"name":"bool","nodeType":"ElementaryTypeName","src":"237:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2808,"nodeType":"FunctionDefinition","src":"268:44:11","nodes":[],"body":{"id":2807,"nodeType":"Block","src":"310:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"289:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"301:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2805,"kind":"baseConstructorSpecifier","modifierName":{"id":2802,"name":"ERC721","nameLocations":["282:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"282:6:11"},"nodeType":"ModifierInvocation","src":"282:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[],"src":"279:2:11"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"310:0:11"},"scope":2877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2853,"nodeType":"FunctionDefinition","src":"318:345:11","nodes":[],"body":{"id":2852,"nodeType":"Block","src":"364:299:11","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2814,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"382:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"386:5:11","memberName":"value","nodeType":"MemberAccess","src":"382:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2816,"name":"mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"395:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"382:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f7272656374206d696e74207072696365","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"406:22:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_a6b61ff65fb1d8206b146846f23d0367e321cdcdbc1bdab3674503169ebae9ab","typeString":"literal_string \"Incorrect mint price\""},"value":"Incorrect mint price"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a6b61ff65fb1d8206b146846f23d0367e321cdcdbc1bdab3674503169ebae9ab","typeString":"literal_string \"Incorrect mint price\""}],"id":2813,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"374:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"374:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2820,"nodeType":"ExpressionStatement","src":"374:55:11"},{"expression":{"arguments":[{"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"447:21:11","subExpression":{"baseExpression":{"id":2822,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"448:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2824,"indexExpression":{"id":2823,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"460:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"448:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616c7265616479206d696e74656421","id":2826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"470:23:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b25a2be90888e047db0be95b5204c98ada8f624b963a4231a07e3af40a94146","typeString":"literal_string \"Token already minted!\""},"value":"Token already minted!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9b25a2be90888e047db0be95b5204c98ada8f624b963a4231a07e3af40a94146","typeString":"literal_string \"Token already minted!\""}],"id":2821,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"439:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"439:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2828,"nodeType":"ExpressionStatement","src":"439:55:11"},{"condition":{"baseExpression":{"id":2829,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"509:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2831,"indexExpression":{"id":2830,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"521:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"509:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2839,"nodeType":"IfStatement","src":"505:73:11","trueBody":{"id":2838,"nodeType":"Block","src":"531:47:11","statements":[{"expression":{"id":2836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2832,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"545:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2833,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"555:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"565:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"555:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"545:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2837,"nodeType":"ExpressionStatement","src":"545:22:11"}]}},{"expression":{"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2840,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"588:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2842,"indexExpression":{"id":2841,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"600:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"588:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"611:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"588:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2845,"nodeType":"ExpressionStatement","src":"588:27:11"},{"expression":{"arguments":[{"expression":{"id":2847,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"636:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"640:6:11","memberName":"sender","nodeType":"MemberAccess","src":"636:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2849,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"648:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2846,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"626:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"626:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2851,"nodeType":"ExpressionStatement","src":"626:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"327:4:11","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"tokenId","nameLocation":"340:7:11","nodeType":"VariableDeclaration","scope":2853,"src":"332:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"332:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"331:17:11"},"returnParameters":{"id":2812,"nodeType":"ParameterList","parameters":[],"src":"364:0:11"},"scope":2877,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":2876,"nodeType":"FunctionDefinition","src":"712:157:11","nodes":[],"body":{"id":2875,"nodeType":"Block","src":"739:130:11","nodes":[],"statements":[{"assignments":[2857,null],"declarations":[{"constant":false,"id":2857,"mutability":"mutable","name":"success","nameLocation":"755:7:11","nodeType":"VariableDeclaration","scope":2875,"src":"750:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2856,"name":"bool","nodeType":"ElementaryTypeName","src":"750:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2869,"initialValue":{"arguments":[{"hexValue":"","id":2867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"814:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":2858,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"768:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"772:6:11","memberName":"sender","nodeType":"MemberAccess","src":"768:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"779:4:11","memberName":"call","nodeType":"MemberAccess","src":"768:15:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"arguments":[{"id":2863,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"799:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2877","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2877","typeString":"contract MNISTNFT"}],"id":2862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"791:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2861,"name":"address","nodeType":"ElementaryTypeName","src":"791:7:11","typeDescriptions":{}}},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"791:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"805:7:11","memberName":"balance","nodeType":"MemberAccess","src":"791:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"768:45:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"768:49:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"749:68:11"},{"expression":{"arguments":[{"id":2871,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"835:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73666572206661696c6564","id":2872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"844:17:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51","typeString":"literal_string \"Transfer failed\""},"value":"Transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51","typeString":"literal_string \"Transfer failed\""}],"id":2870,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"827:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"827:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2874,"nodeType":"ExpressionStatement","src":"827:35:11"}]},"functionSelector":"3ccfd60b","implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"721:8:11","parameters":{"id":2854,"nodeType":"ParameterList","parameters":[],"src":"729:2:11"},"returnParameters":{"id":2855,"nodeType":"ParameterList","parameters":[],"src":"739:0:11"},"scope":2877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2792,"name":"ERC721","nameLocations":["160:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"160:6:11"},"id":2793,"nodeType":"InheritanceSpecifier","src":"160:6:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2877,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"148:8:11","scope":2878,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61112f80620001fd6000396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610221578063b88d4fde14610234578063c87b56dd14610247578063e985e9c51461025a57600080fd5b80636352211e146101d257806370a08231146101e557806395d89b4114610206578063a0712d681461020e57600080fd5b8063095ea7b3116100d3578063095ea7b31461018f57806323b872dd146101a45780633ccfd60b146101b757806342842e0e146101bf57600080fd5b8062923f9e1461010457806301ffc9a71461013c57806306fdde031461014f578063081812fc14610164575b600080fd5b610127610112366004610d64565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61012761014a366004610d93565b61026d565b6101576102bf565b6040516101339190610e00565b610177610172366004610d64565b610351565b6040516001600160a01b039091168152602001610133565b6101a261019d366004610e2f565b61037a565b005b6101a26101b2366004610e59565b610389565b6101a2610419565b6101a26101cd366004610e59565b6104a6565b6101776101e0366004610d64565b6104c6565b6101f86101f3366004610e95565b6104d1565b604051908152602001610133565b610157610519565b6101a261021c366004610d64565b610528565b6101a261022f366004610eb0565b6105c7565b6101a2610242366004610f02565b6105d2565b610157610255366004610d64565b6105e9565b610127610268366004610fde565b61065e565b60006001600160e01b031982166380ac58cd60e01b148061029e57506001600160e01b03198216635b5e139f60e01b145b806102b957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ce90611011565b80601f01602080910402602001604051908101604052809291908181526020018280546102fa90611011565b80156103475780601f1061031c57610100808354040283529160200191610347565b820191906000526020600020905b81548152906001019060200180831161032a57829003601f168201915b5050505050905090565b600061035c8261068c565b506000828152600460205260409020546001600160a01b03166102b9565b6103858282336106c5565b5050565b6001600160a01b0382166103b857604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103c58383336106d2565b9050836001600160a01b0316816001600160a01b031614610413576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103af565b50505050565b604051600090339047908381818185875af1925050503d806000811461045b576040519150601f19603f3d011682016040523d82523d6000602084013e610460565b606091505b50509050806104a35760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103af565b50565b6104c1838383604051806020016040528060008152506105d2565b505050565b60006102b98261068c565b60006001600160a01b0382166104fd576040516322718ad960e21b8152600060048201526024016103af565b506001600160a01b031660009081526003602052604090205490565b6060600180546102ce90611011565b60008181526006602052604090205460ff161561057f5760405162461bcd60e51b8152602060048201526015602482015274546f6b656e20616c7265616479206d696e7465642160581b60448201526064016103af565b60008181526006602052604090205460ff16156105a4576105a181600a61104b565b90505b6000818152600660205260409020805460ff191660011790556104a333826107cb565b6103853383836107e5565b6105dd848484610389565b61041384848484610884565b60606105f48261068c565b50600061060c60408051602081019091526000815290565b9050600081511161062c5760405180602001604052806000815250610657565b80610636846109ad565b604051602001610647929190611070565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806102b957604051637e27328960e01b8152600481018490526024016103af565b6104c18383836001610a40565b6000828152600260205260408120546001600160a01b03908116908316156106ff576106ff818486610b46565b6001600160a01b0381161561073d5761071c600085600080610a40565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561076c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610385828260405180602001604052806000815250610baa565b6001600160a01b03821661081757604051630b61174360e31b81526001600160a01b03831660048201526024016103af565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561041357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906108c690339088908790879060040161109f565b6020604051808303816000875af1925050508015610901575060408051601f3d908101601f191682019092526108fe918101906110dc565b60015b61096a573d80801561092f576040519150601f19603f3d011682016040523d82523d6000602084013e610934565b606091505b50805160000361096257604051633250574960e11b81526001600160a01b03851660048201526024016103af565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146109a657604051633250574960e11b81526001600160a01b03851660048201526024016103af565b5050505050565b606060006109ba83610bc1565b600101905060008167ffffffffffffffff8111156109da576109da610eec565b6040519080825280601f01601f191660200182016040528015610a04576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a0e57509392505050565b8080610a5457506001600160a01b03821615155b15610b16576000610a648461068c565b90506001600160a01b03831615801590610a905750826001600160a01b0316816001600160a01b031614155b8015610aa35750610aa1818461065e565b155b15610acc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103af565b8115610b145783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610b51838383610c99565b6104c1576001600160a01b038316610b7f57604051637e27328960e01b8152600481018290526024016103af565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103af565b610bb48383610cff565b6104c16000848484610884565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c005772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c2c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c4a57662386f26fc10000830492506010015b6305f5e1008310610c62576305f5e100830492506008015b6127108310610c7657612710830492506004015b60648310610c88576064830492506002015b600a83106102b95760010192915050565b60006001600160a01b03831615801590610cf75750826001600160a01b0316846001600160a01b03161480610cd35750610cd3848461065e565b80610cf757506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d2957604051633250574960e11b8152600060048201526024016103af565b6000610d37838360006106d2565b90506001600160a01b038116156104c1576040516339e3563760e11b8152600060048201526024016103af565b600060208284031215610d7657600080fd5b5035919050565b6001600160e01b0319811681146104a357600080fd5b600060208284031215610da557600080fd5b813561065781610d7d565b60005b83811015610dcb578181015183820152602001610db3565b50506000910152565b60008151808452610dec816020860160208601610db0565b601f01601f19169290920160200192915050565b6020815260006106576020830184610dd4565b80356001600160a01b0381168114610e2a57600080fd5b919050565b60008060408385031215610e4257600080fd5b610e4b83610e13565b946020939093013593505050565b600080600060608486031215610e6e57600080fd5b610e7784610e13565b9250610e8560208501610e13565b9150604084013590509250925092565b600060208284031215610ea757600080fd5b61065782610e13565b60008060408385031215610ec357600080fd5b610ecc83610e13565b915060208301358015158114610ee157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f1857600080fd5b610f2185610e13565b9350610f2f60208601610e13565b925060408501359150606085013567ffffffffffffffff80821115610f5357600080fd5b818701915087601f830112610f6757600080fd5b813581811115610f7957610f79610eec565b604051601f8201601f19908116603f01168101908382118183101715610fa157610fa1610eec565b816040528281528a6020848701011115610fba57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ff157600080fd5b610ffa83610e13565b915061100860208401610e13565b90509250929050565b600181811c9082168061102557607f821691505b60208210810361104557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176102b957634e487b7160e01b600052601160045260246000fd5b60008351611082818460208801610db0565b835190830190611096818360208801610db0565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110d290830184610dd4565b9695505050505050565b6000602082840312156110ee57600080fd5b815161065781610d7d56fea264697066735822122017209ba1c8f3f558cd8cb62e99ea2c06893c02f86193320cd506e813a7f87c3d64736f6c63430008170033","sourceMap":"139:614:11:-:0;;;223:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;139:614:11;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:12;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:12;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:12;;;2571:26;2522:89;-1:-1:-1;;1333:1:12;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:12;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:12;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:12;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:12:o;:::-;139:614:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610221578063b88d4fde14610234578063c87b56dd14610247578063e985e9c51461025a57600080fd5b80636352211e146101d257806370a08231146101e557806395d89b4114610206578063a0712d681461020e57600080fd5b8063095ea7b3116100d3578063095ea7b31461018f57806323b872dd146101a45780633ccfd60b146101b757806342842e0e146101bf57600080fd5b8062923f9e1461010457806301ffc9a71461013c57806306fdde031461014f578063081812fc14610164575b600080fd5b610127610112366004610d64565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61012761014a366004610d93565b61026d565b6101576102bf565b6040516101339190610e00565b610177610172366004610d64565b610351565b6040516001600160a01b039091168152602001610133565b6101a261019d366004610e2f565b61037a565b005b6101a26101b2366004610e59565b610389565b6101a2610419565b6101a26101cd366004610e59565b6104a6565b6101776101e0366004610d64565b6104c6565b6101f86101f3366004610e95565b6104d1565b604051908152602001610133565b610157610519565b6101a261021c366004610d64565b610528565b6101a261022f366004610eb0565b6105c7565b6101a2610242366004610f02565b6105d2565b610157610255366004610d64565b6105e9565b610127610268366004610fde565b61065e565b60006001600160e01b031982166380ac58cd60e01b148061029e57506001600160e01b03198216635b5e139f60e01b145b806102b957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ce90611011565b80601f01602080910402602001604051908101604052809291908181526020018280546102fa90611011565b80156103475780601f1061031c57610100808354040283529160200191610347565b820191906000526020600020905b81548152906001019060200180831161032a57829003601f168201915b5050505050905090565b600061035c8261068c565b506000828152600460205260409020546001600160a01b03166102b9565b6103858282336106c5565b5050565b6001600160a01b0382166103b857604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103c58383336106d2565b9050836001600160a01b0316816001600160a01b031614610413576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103af565b50505050565b604051600090339047908381818185875af1925050503d806000811461045b576040519150601f19603f3d011682016040523d82523d6000602084013e610460565b606091505b50509050806104a35760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103af565b50565b6104c1838383604051806020016040528060008152506105d2565b505050565b60006102b98261068c565b60006001600160a01b0382166104fd576040516322718ad960e21b8152600060048201526024016103af565b506001600160a01b031660009081526003602052604090205490565b6060600180546102ce90611011565b60008181526006602052604090205460ff161561057f5760405162461bcd60e51b8152602060048201526015602482015274546f6b656e20616c7265616479206d696e7465642160581b60448201526064016103af565b60008181526006602052604090205460ff16156105a4576105a181600a61104b565b90505b6000818152600660205260409020805460ff191660011790556104a333826107cb565b6103853383836107e5565b6105dd848484610389565b61041384848484610884565b60606105f48261068c565b50600061060c60408051602081019091526000815290565b9050600081511161062c5760405180602001604052806000815250610657565b80610636846109ad565b604051602001610647929190611070565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806102b957604051637e27328960e01b8152600481018490526024016103af565b6104c18383836001610a40565b6000828152600260205260408120546001600160a01b03908116908316156106ff576106ff818486610b46565b6001600160a01b0381161561073d5761071c600085600080610a40565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561076c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610385828260405180602001604052806000815250610baa565b6001600160a01b03821661081757604051630b61174360e31b81526001600160a01b03831660048201526024016103af565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561041357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906108c690339088908790879060040161109f565b6020604051808303816000875af1925050508015610901575060408051601f3d908101601f191682019092526108fe918101906110dc565b60015b61096a573d80801561092f576040519150601f19603f3d011682016040523d82523d6000602084013e610934565b606091505b50805160000361096257604051633250574960e11b81526001600160a01b03851660048201526024016103af565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146109a657604051633250574960e11b81526001600160a01b03851660048201526024016103af565b5050505050565b606060006109ba83610bc1565b600101905060008167ffffffffffffffff8111156109da576109da610eec565b6040519080825280601f01601f191660200182016040528015610a04576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a0e57509392505050565b8080610a5457506001600160a01b03821615155b15610b16576000610a648461068c565b90506001600160a01b03831615801590610a905750826001600160a01b0316816001600160a01b031614155b8015610aa35750610aa1818461065e565b155b15610acc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103af565b8115610b145783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610b51838383610c99565b6104c1576001600160a01b038316610b7f57604051637e27328960e01b8152600481018290526024016103af565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103af565b610bb48383610cff565b6104c16000848484610884565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c005772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c2c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c4a57662386f26fc10000830492506010015b6305f5e1008310610c62576305f5e100830492506008015b6127108310610c7657612710830492506004015b60648310610c88576064830492506002015b600a83106102b95760010192915050565b60006001600160a01b03831615801590610cf75750826001600160a01b0316846001600160a01b03161480610cd35750610cd3848461065e565b80610cf757506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d2957604051633250574960e11b8152600060048201526024016103af565b6000610d37838360006106d2565b90506001600160a01b038116156104c1576040516339e3563760e11b8152600060048201526024016103af565b600060208284031215610d7657600080fd5b5035919050565b6001600160e01b0319811681146104a357600080fd5b600060208284031215610da557600080fd5b813561065781610d7d565b60005b83811015610dcb578181015183820152602001610db3565b50506000910152565b60008151808452610dec816020860160208601610db0565b601f01601f19169290920160200192915050565b6020815260006106576020830184610dd4565b80356001600160a01b0381168114610e2a57600080fd5b919050565b60008060408385031215610e4257600080fd5b610e4b83610e13565b946020939093013593505050565b600080600060608486031215610e6e57600080fd5b610e7784610e13565b9250610e8560208501610e13565b9150604084013590509250925092565b600060208284031215610ea757600080fd5b61065782610e13565b60008060408385031215610ec357600080fd5b610ecc83610e13565b915060208301358015158114610ee157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f1857600080fd5b610f2185610e13565b9350610f2f60208601610e13565b925060408501359150606085013567ffffffffffffffff80821115610f5357600080fd5b818701915087601f830112610f6757600080fd5b813581811115610f7957610f79610eec565b604051601f8201601f19908116603f01168101908382118183101715610fa157610fa1610eec565b816040528281528a6020848701011115610fba57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ff157600080fd5b610ffa83610e13565b915061100860208401610e13565b90509250929050565b600181811c9082168061102557607f821691505b60208210810361104557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176102b957634e487b7160e01b600052601160045260246000fd5b60008351611082818460208801610db0565b835190830190611096818360208801610db0565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110d290830184610dd4565b9695505050505050565b6000602082840312156110ee57600080fd5b815161065781610d7d56fea264697066735822122017209ba1c8f3f558cd8cb62e99ea2c06893c02f86193320cd506e813a7f87c3d64736f6c63430008170033","sourceMap":"139:614:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;173:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;173:43:11;;;;;;;;1561:300:1;;;;;;:::i;:::-;;:::i;2365:89::-;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:12;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:12;3323:113:1;;;;;;:::i;:::-;;:::i;:::-;;4143:578;;;;;;:::i;:::-;;:::i;594:157:11:-;;;:::i;4787:132:1:-;;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:12;;;2836:2;2821:18;1920:208:1;2702:177:12;2518:93:1;;;:::i;273:272:11:-;;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;4143:578::-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:12;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;5419:15:12;;;4654:50:1;;;5401:34:12;5451:18;;;5444:34;;;5514:15;;5494:18;;;5487:43;5336:18;;4654:50:1;5161:375:12;4606:109:1;4223:498;4143:578;;;:::o;594:157:11:-;650:49;;632:12;;650:10;;673:21;;632:12;650:49;632:12;650:49;673:21;650:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:68;;;717:7;709:35;;;;-1:-1:-1;;;709:35:11;;5953:2:12;709:35:11;;;5935:21:12;5992:2;5972:18;;;5965:30;-1:-1:-1;;;6011:18:12;;;6004:45;6066:18;;709:35:11;5751:339:12;709:35:11;621:130;594:157::o;4787:132:1:-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:12;1652:18;;2048:30:1;1533:203:12;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;273:272:11:-;330:20;;;;:11;:20;;;;;;;;329:21;321:55;;;;-1:-1:-1;;;321:55:11;;6297:2:12;321:55:11;;;6279:21:12;6336:2;6316:18;;;6309:30;-1:-1:-1;;;6355:18:12;;;6348:51;6416:18;;321:55:11;6095:345:12;321:55:11;391:20;;;;:11;:20;;;;;;;;387:73;;;437:12;:7;447:2;437:12;:::i;:::-;427:22;;387:73;470:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;470:27:11;493:4;470:27;;;508:30;518:10;482:7;508:9;:30::i;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2848:25:12;;;2821:18;;16309:31:1;2702:177:12;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;8838:795::-;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:12;;15743:31:1;;;1679:51:12;1652:18;;15743:31:1;1533:203:12;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::12;;;15855::1;;312:18:12;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:12;;17430:25:1;;;1679:51:12;1652:18;;17430:25:1;1533:203:12;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:12;;17272:25:1;;;1679:51:12;1652:18;;17272:25:1;1533:203:12;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:12;;15189:27:1;;;1679:51:12;1652:18;;15189:27:1;1533:203:12;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2848:25:12;;;2821:18;;7298:31:1;2702:177:12;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8288:32:12;;7375:44:1;;;8270:51:12;8337:18;;;8330:34;;;8243:18;;7375:44:1;8096:274:12;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:12;1652:18;;10061:33:1;1533:203:12;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:12;1652:18;;10234:31:1;1533:203:12;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;391:131::-;-1:-1:-1;;;;;;465:32:12;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:12;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:12;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:12:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:12;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:12:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:12;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;6445:265::-;6518:9;;;6549;;6566:15;;;6560:22;;6546:37;6536:168;;6626:10;6621:3;6617:20;6614:1;6607:31;6661:4;6658:1;6651:15;6689:4;6686:1;6679:15;6715:496;6894:3;6932:6;6926:13;6948:66;7007:6;7002:3;6995:4;6987:6;6983:17;6948:66;:::i;:::-;7077:13;;7036:16;;;;7099:70;7077:13;7036:16;7146:4;7134:17;;7099:70;:::i;:::-;7185:20;;6715:496;-1:-1:-1;;;;6715:496:12:o;7216:489::-;-1:-1:-1;;;;;7485:15:12;;;7467:34;;7537:15;;7532:2;7517:18;;7510:43;7584:2;7569:18;;7562:34;;;7632:3;7627:2;7612:18;;7605:31;;;7410:4;;7653:46;;7679:19;;7671:6;7653:46;:::i;:::-;7645:54;7216:489;-1:-1:-1;;;;;;7216:489:12:o;7710:249::-;7779:6;7832:2;7820:9;7811:7;7807:23;7803:32;7800:52;;;7848:1;7845;7838:12;7800:52;7880:9;7874:16;7899:30;7923:5;7899:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0x2928000f355b3ff39d70cd862b19157e7fb79f790bd8bb3ed3854c277693d4c2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://46222ba4a1edbe7df948bce3a58b776b2e78b1e5dc2a70a0a4330b6409e743d8\",\"dweb:/ipfs/QmbJqMhemQFHr13xwunRFoP631kYXwzMFaj1tsUdh1w6oK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0x2928000f355b3ff39d70cd862b19157e7fb79f790bd8bb3ed3854c277693d4c2","urls":["bzz-raw://46222ba4a1edbe7df948bce3a58b776b2e78b1e5dc2a70a0a4330b6409e743d8","dweb:/ipfs/QmbJqMhemQFHr13xwunRFoP631kYXwzMFaj1tsUdh1w6oK"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2867,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2866],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:714:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2867,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2866,"nodeType":"ContractDefinition","src":"139:614:11","nodes":[{"id":2797,"nodeType":"VariableDeclaration","src":"173:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"205:11:11","scope":2866,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2796,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2794,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"173:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2795,"name":"bool","nodeType":"ElementaryTypeName","src":"192:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2805,"nodeType":"FunctionDefinition","src":"223:44:11","nodes":[],"body":{"id":2804,"nodeType":"Block","src":"265:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"244:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"256:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2802,"kind":"baseConstructorSpecifier","modifierName":{"id":2799,"name":"ERC721","nameLocations":["237:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"237:6:11"},"nodeType":"ModifierInvocation","src":"237:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2798,"nodeType":"ParameterList","parameters":[],"src":"234:2:11"},"returnParameters":{"id":2803,"nodeType":"ParameterList","parameters":[],"src":"265:0:11"},"scope":2866,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2842,"nodeType":"FunctionDefinition","src":"273:272:11","nodes":[],"body":{"id":2841,"nodeType":"Block","src":"311:234:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"329:21:11","subExpression":{"baseExpression":{"id":2811,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"330:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2813,"indexExpression":{"id":2812,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"342:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"330:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616c7265616479206d696e74656421","id":2815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"352:23:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b25a2be90888e047db0be95b5204c98ada8f624b963a4231a07e3af40a94146","typeString":"literal_string \"Token already minted!\""},"value":"Token already minted!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9b25a2be90888e047db0be95b5204c98ada8f624b963a4231a07e3af40a94146","typeString":"literal_string \"Token already minted!\""}],"id":2810,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"321:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"321:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"321:55:11"},{"condition":{"baseExpression":{"id":2818,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"391:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2820,"indexExpression":{"id":2819,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"403:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"391:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2828,"nodeType":"IfStatement","src":"387:73:11","trueBody":{"id":2827,"nodeType":"Block","src":"413:47:11","statements":[{"expression":{"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2821,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"427:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2822,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"447:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"437:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"427:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2826,"nodeType":"ExpressionStatement","src":"427:22:11"}]}},{"expression":{"id":2833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2829,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"470:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2831,"indexExpression":{"id":2830,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"482:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"470:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"493:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"470:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2834,"nodeType":"ExpressionStatement","src":"470:27:11"},{"expression":{"arguments":[{"expression":{"id":2836,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"518:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"522:6:11","memberName":"sender","nodeType":"MemberAccess","src":"518:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2838,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"530:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2835,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"508:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2840,"nodeType":"ExpressionStatement","src":"508:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"282:4:11","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2807,"mutability":"mutable","name":"tokenId","nameLocation":"295:7:11","nodeType":"VariableDeclaration","scope":2842,"src":"287:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2806,"name":"uint256","nodeType":"ElementaryTypeName","src":"287:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"286:17:11"},"returnParameters":{"id":2809,"nodeType":"ParameterList","parameters":[],"src":"311:0:11"},"scope":2866,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2865,"nodeType":"FunctionDefinition","src":"594:157:11","nodes":[],"body":{"id":2864,"nodeType":"Block","src":"621:130:11","nodes":[],"statements":[{"assignments":[2846,null],"declarations":[{"constant":false,"id":2846,"mutability":"mutable","name":"success","nameLocation":"637:7:11","nodeType":"VariableDeclaration","scope":2864,"src":"632:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2845,"name":"bool","nodeType":"ElementaryTypeName","src":"632:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2858,"initialValue":{"arguments":[{"hexValue":"","id":2856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"696:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":2847,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"650:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"654:6:11","memberName":"sender","nodeType":"MemberAccess","src":"650:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"661:4:11","memberName":"call","nodeType":"MemberAccess","src":"650:15:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"arguments":[{"id":2852,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"681:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2866","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2866","typeString":"contract MNISTNFT"}],"id":2851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"673:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2850,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:11","typeDescriptions":{}}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"673:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"687:7:11","memberName":"balance","nodeType":"MemberAccess","src":"673:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"650:45:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"650:49:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"631:68:11"},{"expression":{"arguments":[{"id":2860,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"717:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73666572206661696c6564","id":2861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"726:17:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51","typeString":"literal_string \"Transfer failed\""},"value":"Transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51","typeString":"literal_string \"Transfer failed\""}],"id":2859,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"709:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"709:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2863,"nodeType":"ExpressionStatement","src":"709:35:11"}]},"functionSelector":"3ccfd60b","implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"603:8:11","parameters":{"id":2843,"nodeType":"ParameterList","parameters":[],"src":"611:2:11"},"returnParameters":{"id":2844,"nodeType":"ParameterList","parameters":[],"src":"621:0:11"},"scope":2866,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2792,"name":"ERC721","nameLocations":["160:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"160:6:11"},"id":2793,"nodeType":"InheritanceSpecifier","src":"160:6:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2866,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"148:8:11","scope":2867,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/src/MNISTNFT.sol b/examples/on-chain_mnist/contracts/src/MNISTNFT.sol index 4bc8ac8..20e7f39 100644 --- a/examples/on-chain_mnist/contracts/src/MNISTNFT.sol +++ b/examples/on-chain_mnist/contracts/src/MNISTNFT.sol @@ -4,14 +4,11 @@ pragma solidity ^0.8.0; import "../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol"; contract MNISTNFT is ERC721 { - uint256 public mintPrice = 0.005 ether; - mapping(uint256 => bool) public tokenExists; constructor() ERC721("MNISTNFT", "MNIST") {} - function mint(uint256 tokenId) public payable { - require(msg.value == mintPrice, "Incorrect mint price"); + function mint(uint256 tokenId) public { require(!tokenExists[tokenId], "Token already minted!"); if (tokenExists[tokenId]) { @@ -28,4 +25,4 @@ contract MNISTNFT is ERC721 { (bool success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed"); } -} +} \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index e7a8080..ab4a322 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -3,7 +3,7 @@ import json import time from web3 import Web3 -from web3.exceptions import TimeExhausted +from web3.exceptions import TimeExhausted, ContractCustomError from eth_account import Account from eth_account.messages import SignableMessage from eth_typing import Address @@ -268,7 +268,7 @@ async def verify(self, proof_path): return True - async def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): + async def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): """ Transmit: Verify the proof signature (so we know that the account owner signed off on the proof verification), verify the proof, then send the transaction to the contract. @@ -327,7 +327,7 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: "nonce": nonce, "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), "gasPrice": 40000000000, - "value": web3.toWei(0.005, "ether"), + "value": value, } except KeyError as e: print(f"Error creating transaction dictionary: {str(e)}") @@ -353,12 +353,17 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: except ValueError as e: print(f"Error encoding transaction: {e}") return None + + except ContractCustomError as e: + print(f"Custom error occurred: {e}") + print(f"Error message: {e.args[0]}") + return None except Exception as e: print(f"Error transmitting transaction: {str(e)}") print(f"Exception type: {type(e)}") return None - + def get_deployment_id(model_id, version_id): From 52682264462cb9129ef1b63b6626e9c29c2d0665 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Fri, 8 Mar 2024 11:22:58 +0000 Subject: [PATCH 10/27] fix: flatten contract for debugging --- examples/on-chain_mnist/abi/MNISTNFT_abi.json | 58 +- examples/on-chain_mnist/action_agent.py | 4 + .../contracts/cache/solidity-files-cache.json | 2 +- .../contracts/out/MNISTNFT.sol/MNISTNFT.json | 2 +- .../on-chain_mnist/contracts/src/MNISTNFT.sol | 34 +- .../contracts/src/MNISTNFT_Flattened.sol | 1542 +++++++++++++++++ giza_actions/agent.py | 13 +- 7 files changed, 1636 insertions(+), 19 deletions(-) create mode 100644 examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol diff --git a/examples/on-chain_mnist/abi/MNISTNFT_abi.json b/examples/on-chain_mnist/abi/MNISTNFT_abi.json index e13fb02..464cb0e 100644 --- a/examples/on-chain_mnist/abi/MNISTNFT_abi.json +++ b/examples/on-chain_mnist/abi/MNISTNFT_abi.json @@ -182,6 +182,10 @@ "name": "Transfer", "type": "event" }, + { + "stateMutability": "payable", + "type": "fallback" + }, { "inputs": [ { @@ -238,6 +242,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -288,6 +305,40 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -470,10 +521,7 @@ "type": "function" }, { - "inputs": [], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "payable", + "type": "receive" } ] \ No newline at end of file diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index c740dc5..40423be 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -5,6 +5,7 @@ import os import json import numpy as np +from web3 import Web3 from PIL import Image from giza_actions.action import Action, action from giza_actions.agent import GizaAgent, ProofType, ProofMessage @@ -77,6 +78,9 @@ async def transmission(): agent.infer(input_feed={"image": img}) # Fetch the contract address and modified inference result contract_address = os.getenv("CONTRACT_ADDRESS") + # contract_address = Web3.to_checksum_address(contract_noncheck_address) + print("Contract Address: ", contract_address) + inference_result = int(agent.inference[0][0] * 10) inference_result_arr = [inference_result] print("inference result: ", inference_result_arr) diff --git a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json index e7fa03a..b089b6c 100644 --- a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json +++ b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.23+commit.f704f362.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.23+commit.f704f362.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.23+commit.f704f362.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.23+commit.f704f362.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709830385299,"contentHash":"b33d572aec5755f3fd9a3d68c4ecbc50","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.23+commit.f704f362.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}}}} \ No newline at end of file +{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.23+commit.f704f362.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.23+commit.f704f362.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.23+commit.f704f362.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.23+commit.f704f362.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709895315352,"contentHash":"088c5eb5ca245afe32dd7541234a1a89","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.23+commit.f704f362.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}}}} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json index 81a881d..2ebb294 100644 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61112f80620001fd6000396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610221578063b88d4fde14610234578063c87b56dd14610247578063e985e9c51461025a57600080fd5b80636352211e146101d257806370a08231146101e557806395d89b4114610206578063a0712d681461020e57600080fd5b8063095ea7b3116100d3578063095ea7b31461018f57806323b872dd146101a45780633ccfd60b146101b757806342842e0e146101bf57600080fd5b8062923f9e1461010457806301ffc9a71461013c57806306fdde031461014f578063081812fc14610164575b600080fd5b610127610112366004610d64565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61012761014a366004610d93565b61026d565b6101576102bf565b6040516101339190610e00565b610177610172366004610d64565b610351565b6040516001600160a01b039091168152602001610133565b6101a261019d366004610e2f565b61037a565b005b6101a26101b2366004610e59565b610389565b6101a2610419565b6101a26101cd366004610e59565b6104a6565b6101776101e0366004610d64565b6104c6565b6101f86101f3366004610e95565b6104d1565b604051908152602001610133565b610157610519565b6101a261021c366004610d64565b610528565b6101a261022f366004610eb0565b6105c7565b6101a2610242366004610f02565b6105d2565b610157610255366004610d64565b6105e9565b610127610268366004610fde565b61065e565b60006001600160e01b031982166380ac58cd60e01b148061029e57506001600160e01b03198216635b5e139f60e01b145b806102b957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ce90611011565b80601f01602080910402602001604051908101604052809291908181526020018280546102fa90611011565b80156103475780601f1061031c57610100808354040283529160200191610347565b820191906000526020600020905b81548152906001019060200180831161032a57829003601f168201915b5050505050905090565b600061035c8261068c565b506000828152600460205260409020546001600160a01b03166102b9565b6103858282336106c5565b5050565b6001600160a01b0382166103b857604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103c58383336106d2565b9050836001600160a01b0316816001600160a01b031614610413576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103af565b50505050565b604051600090339047908381818185875af1925050503d806000811461045b576040519150601f19603f3d011682016040523d82523d6000602084013e610460565b606091505b50509050806104a35760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103af565b50565b6104c1838383604051806020016040528060008152506105d2565b505050565b60006102b98261068c565b60006001600160a01b0382166104fd576040516322718ad960e21b8152600060048201526024016103af565b506001600160a01b031660009081526003602052604090205490565b6060600180546102ce90611011565b60008181526006602052604090205460ff161561057f5760405162461bcd60e51b8152602060048201526015602482015274546f6b656e20616c7265616479206d696e7465642160581b60448201526064016103af565b60008181526006602052604090205460ff16156105a4576105a181600a61104b565b90505b6000818152600660205260409020805460ff191660011790556104a333826107cb565b6103853383836107e5565b6105dd848484610389565b61041384848484610884565b60606105f48261068c565b50600061060c60408051602081019091526000815290565b9050600081511161062c5760405180602001604052806000815250610657565b80610636846109ad565b604051602001610647929190611070565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806102b957604051637e27328960e01b8152600481018490526024016103af565b6104c18383836001610a40565b6000828152600260205260408120546001600160a01b03908116908316156106ff576106ff818486610b46565b6001600160a01b0381161561073d5761071c600085600080610a40565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561076c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610385828260405180602001604052806000815250610baa565b6001600160a01b03821661081757604051630b61174360e31b81526001600160a01b03831660048201526024016103af565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561041357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906108c690339088908790879060040161109f565b6020604051808303816000875af1925050508015610901575060408051601f3d908101601f191682019092526108fe918101906110dc565b60015b61096a573d80801561092f576040519150601f19603f3d011682016040523d82523d6000602084013e610934565b606091505b50805160000361096257604051633250574960e11b81526001600160a01b03851660048201526024016103af565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146109a657604051633250574960e11b81526001600160a01b03851660048201526024016103af565b5050505050565b606060006109ba83610bc1565b600101905060008167ffffffffffffffff8111156109da576109da610eec565b6040519080825280601f01601f191660200182016040528015610a04576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a0e57509392505050565b8080610a5457506001600160a01b03821615155b15610b16576000610a648461068c565b90506001600160a01b03831615801590610a905750826001600160a01b0316816001600160a01b031614155b8015610aa35750610aa1818461065e565b155b15610acc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103af565b8115610b145783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610b51838383610c99565b6104c1576001600160a01b038316610b7f57604051637e27328960e01b8152600481018290526024016103af565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103af565b610bb48383610cff565b6104c16000848484610884565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c005772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c2c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c4a57662386f26fc10000830492506010015b6305f5e1008310610c62576305f5e100830492506008015b6127108310610c7657612710830492506004015b60648310610c88576064830492506002015b600a83106102b95760010192915050565b60006001600160a01b03831615801590610cf75750826001600160a01b0316846001600160a01b03161480610cd35750610cd3848461065e565b80610cf757506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d2957604051633250574960e11b8152600060048201526024016103af565b6000610d37838360006106d2565b90506001600160a01b038116156104c1576040516339e3563760e11b8152600060048201526024016103af565b600060208284031215610d7657600080fd5b5035919050565b6001600160e01b0319811681146104a357600080fd5b600060208284031215610da557600080fd5b813561065781610d7d565b60005b83811015610dcb578181015183820152602001610db3565b50506000910152565b60008151808452610dec816020860160208601610db0565b601f01601f19169290920160200192915050565b6020815260006106576020830184610dd4565b80356001600160a01b0381168114610e2a57600080fd5b919050565b60008060408385031215610e4257600080fd5b610e4b83610e13565b946020939093013593505050565b600080600060608486031215610e6e57600080fd5b610e7784610e13565b9250610e8560208501610e13565b9150604084013590509250925092565b600060208284031215610ea757600080fd5b61065782610e13565b60008060408385031215610ec357600080fd5b610ecc83610e13565b915060208301358015158114610ee157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f1857600080fd5b610f2185610e13565b9350610f2f60208601610e13565b925060408501359150606085013567ffffffffffffffff80821115610f5357600080fd5b818701915087601f830112610f6757600080fd5b813581811115610f7957610f79610eec565b604051601f8201601f19908116603f01168101908382118183101715610fa157610fa1610eec565b816040528281528a6020848701011115610fba57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ff157600080fd5b610ffa83610e13565b915061100860208401610e13565b90509250929050565b600181811c9082168061102557607f821691505b60208210810361104557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176102b957634e487b7160e01b600052601160045260246000fd5b60008351611082818460208801610db0565b835190830190611096818360208801610db0565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110d290830184610dd4565b9695505050505050565b6000602082840312156110ee57600080fd5b815161065781610d7d56fea264697066735822122017209ba1c8f3f558cd8cb62e99ea2c06893c02f86193320cd506e813a7f87c3d64736f6c63430008170033","sourceMap":"139:614:11:-:0;;;223:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;139:614:11;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:12;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:12;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:12;;;2571:26;2522:89;-1:-1:-1;;1333:1:12;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:12;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:12;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:12;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:12:o;:::-;139:614:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610221578063b88d4fde14610234578063c87b56dd14610247578063e985e9c51461025a57600080fd5b80636352211e146101d257806370a08231146101e557806395d89b4114610206578063a0712d681461020e57600080fd5b8063095ea7b3116100d3578063095ea7b31461018f57806323b872dd146101a45780633ccfd60b146101b757806342842e0e146101bf57600080fd5b8062923f9e1461010457806301ffc9a71461013c57806306fdde031461014f578063081812fc14610164575b600080fd5b610127610112366004610d64565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61012761014a366004610d93565b61026d565b6101576102bf565b6040516101339190610e00565b610177610172366004610d64565b610351565b6040516001600160a01b039091168152602001610133565b6101a261019d366004610e2f565b61037a565b005b6101a26101b2366004610e59565b610389565b6101a2610419565b6101a26101cd366004610e59565b6104a6565b6101776101e0366004610d64565b6104c6565b6101f86101f3366004610e95565b6104d1565b604051908152602001610133565b610157610519565b6101a261021c366004610d64565b610528565b6101a261022f366004610eb0565b6105c7565b6101a2610242366004610f02565b6105d2565b610157610255366004610d64565b6105e9565b610127610268366004610fde565b61065e565b60006001600160e01b031982166380ac58cd60e01b148061029e57506001600160e01b03198216635b5e139f60e01b145b806102b957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ce90611011565b80601f01602080910402602001604051908101604052809291908181526020018280546102fa90611011565b80156103475780601f1061031c57610100808354040283529160200191610347565b820191906000526020600020905b81548152906001019060200180831161032a57829003601f168201915b5050505050905090565b600061035c8261068c565b506000828152600460205260409020546001600160a01b03166102b9565b6103858282336106c5565b5050565b6001600160a01b0382166103b857604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103c58383336106d2565b9050836001600160a01b0316816001600160a01b031614610413576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103af565b50505050565b604051600090339047908381818185875af1925050503d806000811461045b576040519150601f19603f3d011682016040523d82523d6000602084013e610460565b606091505b50509050806104a35760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103af565b50565b6104c1838383604051806020016040528060008152506105d2565b505050565b60006102b98261068c565b60006001600160a01b0382166104fd576040516322718ad960e21b8152600060048201526024016103af565b506001600160a01b031660009081526003602052604090205490565b6060600180546102ce90611011565b60008181526006602052604090205460ff161561057f5760405162461bcd60e51b8152602060048201526015602482015274546f6b656e20616c7265616479206d696e7465642160581b60448201526064016103af565b60008181526006602052604090205460ff16156105a4576105a181600a61104b565b90505b6000818152600660205260409020805460ff191660011790556104a333826107cb565b6103853383836107e5565b6105dd848484610389565b61041384848484610884565b60606105f48261068c565b50600061060c60408051602081019091526000815290565b9050600081511161062c5760405180602001604052806000815250610657565b80610636846109ad565b604051602001610647929190611070565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806102b957604051637e27328960e01b8152600481018490526024016103af565b6104c18383836001610a40565b6000828152600260205260408120546001600160a01b03908116908316156106ff576106ff818486610b46565b6001600160a01b0381161561073d5761071c600085600080610a40565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561076c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610385828260405180602001604052806000815250610baa565b6001600160a01b03821661081757604051630b61174360e31b81526001600160a01b03831660048201526024016103af565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561041357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906108c690339088908790879060040161109f565b6020604051808303816000875af1925050508015610901575060408051601f3d908101601f191682019092526108fe918101906110dc565b60015b61096a573d80801561092f576040519150601f19603f3d011682016040523d82523d6000602084013e610934565b606091505b50805160000361096257604051633250574960e11b81526001600160a01b03851660048201526024016103af565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146109a657604051633250574960e11b81526001600160a01b03851660048201526024016103af565b5050505050565b606060006109ba83610bc1565b600101905060008167ffffffffffffffff8111156109da576109da610eec565b6040519080825280601f01601f191660200182016040528015610a04576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a0e57509392505050565b8080610a5457506001600160a01b03821615155b15610b16576000610a648461068c565b90506001600160a01b03831615801590610a905750826001600160a01b0316816001600160a01b031614155b8015610aa35750610aa1818461065e565b155b15610acc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103af565b8115610b145783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610b51838383610c99565b6104c1576001600160a01b038316610b7f57604051637e27328960e01b8152600481018290526024016103af565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103af565b610bb48383610cff565b6104c16000848484610884565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c005772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c2c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c4a57662386f26fc10000830492506010015b6305f5e1008310610c62576305f5e100830492506008015b6127108310610c7657612710830492506004015b60648310610c88576064830492506002015b600a83106102b95760010192915050565b60006001600160a01b03831615801590610cf75750826001600160a01b0316846001600160a01b03161480610cd35750610cd3848461065e565b80610cf757506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d2957604051633250574960e11b8152600060048201526024016103af565b6000610d37838360006106d2565b90506001600160a01b038116156104c1576040516339e3563760e11b8152600060048201526024016103af565b600060208284031215610d7657600080fd5b5035919050565b6001600160e01b0319811681146104a357600080fd5b600060208284031215610da557600080fd5b813561065781610d7d565b60005b83811015610dcb578181015183820152602001610db3565b50506000910152565b60008151808452610dec816020860160208601610db0565b601f01601f19169290920160200192915050565b6020815260006106576020830184610dd4565b80356001600160a01b0381168114610e2a57600080fd5b919050565b60008060408385031215610e4257600080fd5b610e4b83610e13565b946020939093013593505050565b600080600060608486031215610e6e57600080fd5b610e7784610e13565b9250610e8560208501610e13565b9150604084013590509250925092565b600060208284031215610ea757600080fd5b61065782610e13565b60008060408385031215610ec357600080fd5b610ecc83610e13565b915060208301358015158114610ee157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f1857600080fd5b610f2185610e13565b9350610f2f60208601610e13565b925060408501359150606085013567ffffffffffffffff80821115610f5357600080fd5b818701915087601f830112610f6757600080fd5b813581811115610f7957610f79610eec565b604051601f8201601f19908116603f01168101908382118183101715610fa157610fa1610eec565b816040528281528a6020848701011115610fba57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ff157600080fd5b610ffa83610e13565b915061100860208401610e13565b90509250929050565b600181811c9082168061102557607f821691505b60208210810361104557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176102b957634e487b7160e01b600052601160045260246000fd5b60008351611082818460208801610db0565b835190830190611096818360208801610db0565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110d290830184610dd4565b9695505050505050565b6000602082840312156110ee57600080fd5b815161065781610d7d56fea264697066735822122017209ba1c8f3f558cd8cb62e99ea2c06893c02f86193320cd506e813a7f87c3d64736f6c63430008170033","sourceMap":"139:614:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;173:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;173:43:11;;;;;;;;1561:300:1;;;;;;:::i;:::-;;:::i;2365:89::-;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:12;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:12;3323:113:1;;;;;;:::i;:::-;;:::i;:::-;;4143:578;;;;;;:::i;:::-;;:::i;594:157:11:-;;;:::i;4787:132:1:-;;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:12;;;2836:2;2821:18;1920:208:1;2702:177:12;2518:93:1;;;:::i;273:272:11:-;;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;4143:578::-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:12;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;5419:15:12;;;4654:50:1;;;5401:34:12;5451:18;;;5444:34;;;5514:15;;5494:18;;;5487:43;5336:18;;4654:50:1;5161:375:12;4606:109:1;4223:498;4143:578;;;:::o;594:157:11:-;650:49;;632:12;;650:10;;673:21;;632:12;650:49;632:12;650:49;673:21;650:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:68;;;717:7;709:35;;;;-1:-1:-1;;;709:35:11;;5953:2:12;709:35:11;;;5935:21:12;5992:2;5972:18;;;5965:30;-1:-1:-1;;;6011:18:12;;;6004:45;6066:18;;709:35:11;5751:339:12;709:35:11;621:130;594:157::o;4787:132:1:-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:12;1652:18;;2048:30:1;1533:203:12;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;273:272:11:-;330:20;;;;:11;:20;;;;;;;;329:21;321:55;;;;-1:-1:-1;;;321:55:11;;6297:2:12;321:55:11;;;6279:21:12;6336:2;6316:18;;;6309:30;-1:-1:-1;;;6355:18:12;;;6348:51;6416:18;;321:55:11;6095:345:12;321:55:11;391:20;;;;:11;:20;;;;;;;;387:73;;;437:12;:7;447:2;437:12;:::i;:::-;427:22;;387:73;470:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;470:27:11;493:4;470:27;;;508:30;518:10;482:7;508:9;:30::i;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2848:25:12;;;2821:18;;16309:31:1;2702:177:12;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;8838:795::-;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:12;;15743:31:1;;;1679:51:12;1652:18;;15743:31:1;1533:203:12;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::12;;;15855::1;;312:18:12;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:12;;17430:25:1;;;1679:51:12;1652:18;;17430:25:1;1533:203:12;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:12;;17272:25:1;;;1679:51:12;1652:18;;17272:25:1;1533:203:12;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:12;;15189:27:1;;;1679:51:12;1652:18;;15189:27:1;1533:203:12;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2848:25:12;;;2821:18;;7298:31:1;2702:177:12;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8288:32:12;;7375:44:1;;;8270:51:12;8337:18;;;8330:34;;;8243:18;;7375:44:1;8096:274:12;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:12;1652:18;;10061:33:1;1533:203:12;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:12;1652:18;;10234:31:1;1533:203:12;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;391:131::-;-1:-1:-1;;;;;;465:32:12;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:12;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:12;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:12:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:12;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:12:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:12;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;6445:265::-;6518:9;;;6549;;6566:15;;;6560:22;;6546:37;6536:168;;6626:10;6621:3;6617:20;6614:1;6607:31;6661:4;6658:1;6651:15;6689:4;6686:1;6679:15;6715:496;6894:3;6932:6;6926:13;6948:66;7007:6;7002:3;6995:4;6987:6;6983:17;6948:66;:::i;:::-;7077:13;;7036:16;;;;7099:70;7077:13;7036:16;7146:4;7134:17;;7099:70;:::i;:::-;7185:20;;6715:496;-1:-1:-1;;;;6715:496:12:o;7216:489::-;-1:-1:-1;;;;;7485:15:12;;;7467:34;;7537:15;;7532:2;7517:18;;7510:43;7584:2;7569:18;;7562:34;;;7632:3;7627:2;7612:18;;7605:31;;;7410:4;;7653:46;;7679:19;;7671:6;7653:46;:::i;:::-;7645:54;7216:489;-1:-1:-1;;;;;;7216:489:12:o;7710:249::-;7779:6;7832:2;7820:9;7811:7;7807:23;7803:32;7800:52;;;7848:1;7845;7838:12;7800:52;7880:9;7874:16;7899:30;7923:5;7899:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0x2928000f355b3ff39d70cd862b19157e7fb79f790bd8bb3ed3854c277693d4c2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://46222ba4a1edbe7df948bce3a58b776b2e78b1e5dc2a70a0a4330b6409e743d8\",\"dweb:/ipfs/QmbJqMhemQFHr13xwunRFoP631kYXwzMFaj1tsUdh1w6oK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0x2928000f355b3ff39d70cd862b19157e7fb79f790bd8bb3ed3854c277693d4c2","urls":["bzz-raw://46222ba4a1edbe7df948bce3a58b776b2e78b1e5dc2a70a0a4330b6409e743d8","dweb:/ipfs/QmbJqMhemQFHr13xwunRFoP631kYXwzMFaj1tsUdh1w6oK"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2867,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2866],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:714:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2867,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2866,"nodeType":"ContractDefinition","src":"139:614:11","nodes":[{"id":2797,"nodeType":"VariableDeclaration","src":"173:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"205:11:11","scope":2866,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2796,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2794,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"173:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2795,"name":"bool","nodeType":"ElementaryTypeName","src":"192:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2805,"nodeType":"FunctionDefinition","src":"223:44:11","nodes":[],"body":{"id":2804,"nodeType":"Block","src":"265:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"244:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"256:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2802,"kind":"baseConstructorSpecifier","modifierName":{"id":2799,"name":"ERC721","nameLocations":["237:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"237:6:11"},"nodeType":"ModifierInvocation","src":"237:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2798,"nodeType":"ParameterList","parameters":[],"src":"234:2:11"},"returnParameters":{"id":2803,"nodeType":"ParameterList","parameters":[],"src":"265:0:11"},"scope":2866,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2842,"nodeType":"FunctionDefinition","src":"273:272:11","nodes":[],"body":{"id":2841,"nodeType":"Block","src":"311:234:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"329:21:11","subExpression":{"baseExpression":{"id":2811,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"330:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2813,"indexExpression":{"id":2812,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"342:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"330:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616c7265616479206d696e74656421","id":2815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"352:23:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b25a2be90888e047db0be95b5204c98ada8f624b963a4231a07e3af40a94146","typeString":"literal_string \"Token already minted!\""},"value":"Token already minted!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9b25a2be90888e047db0be95b5204c98ada8f624b963a4231a07e3af40a94146","typeString":"literal_string \"Token already minted!\""}],"id":2810,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"321:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"321:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"321:55:11"},{"condition":{"baseExpression":{"id":2818,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"391:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2820,"indexExpression":{"id":2819,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"403:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"391:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2828,"nodeType":"IfStatement","src":"387:73:11","trueBody":{"id":2827,"nodeType":"Block","src":"413:47:11","statements":[{"expression":{"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2821,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"427:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2822,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"447:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"437:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"427:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2826,"nodeType":"ExpressionStatement","src":"427:22:11"}]}},{"expression":{"id":2833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2829,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"470:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2831,"indexExpression":{"id":2830,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"482:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"470:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"493:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"470:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2834,"nodeType":"ExpressionStatement","src":"470:27:11"},{"expression":{"arguments":[{"expression":{"id":2836,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"518:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"522:6:11","memberName":"sender","nodeType":"MemberAccess","src":"518:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2838,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"530:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2835,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"508:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2840,"nodeType":"ExpressionStatement","src":"508:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"282:4:11","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2807,"mutability":"mutable","name":"tokenId","nameLocation":"295:7:11","nodeType":"VariableDeclaration","scope":2842,"src":"287:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2806,"name":"uint256","nodeType":"ElementaryTypeName","src":"287:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"286:17:11"},"returnParameters":{"id":2809,"nodeType":"ParameterList","parameters":[],"src":"311:0:11"},"scope":2866,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2865,"nodeType":"FunctionDefinition","src":"594:157:11","nodes":[],"body":{"id":2864,"nodeType":"Block","src":"621:130:11","nodes":[],"statements":[{"assignments":[2846,null],"declarations":[{"constant":false,"id":2846,"mutability":"mutable","name":"success","nameLocation":"637:7:11","nodeType":"VariableDeclaration","scope":2864,"src":"632:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2845,"name":"bool","nodeType":"ElementaryTypeName","src":"632:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2858,"initialValue":{"arguments":[{"hexValue":"","id":2856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"696:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":2847,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"650:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"654:6:11","memberName":"sender","nodeType":"MemberAccess","src":"650:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"661:4:11","memberName":"call","nodeType":"MemberAccess","src":"650:15:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"arguments":[{"id":2852,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"681:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2866","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2866","typeString":"contract MNISTNFT"}],"id":2851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"673:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2850,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:11","typeDescriptions":{}}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"673:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"687:7:11","memberName":"balance","nodeType":"MemberAccess","src":"673:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"650:45:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"650:49:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"631:68:11"},{"expression":{"arguments":[{"id":2860,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"717:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73666572206661696c6564","id":2861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"726:17:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51","typeString":"literal_string \"Transfer failed\""},"value":"Transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51","typeString":"literal_string \"Transfer failed\""}],"id":2859,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"709:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"709:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2863,"nodeType":"ExpressionStatement","src":"709:35:11"}]},"functionSelector":"3ccfd60b","implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"603:8:11","parameters":{"id":2843,"nodeType":"ParameterList","parameters":[],"src":"611:2:11"},"returnParameters":{"id":2844,"nodeType":"ParameterList","parameters":[],"src":"621:0:11"},"scope":2866,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2792,"name":"ERC721","nameLocations":["160:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"160:6:11"},"id":2793,"nodeType":"InheritanceSpecifier","src":"160:6:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2866,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"148:8:11","scope":2867,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61123c80620001fd6000396000f3fe6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea26469706673582212203a33c02bd4ef2bf6f7845eca6f82a6920664ae1f11c600380aaa19683c0b6d9964736f6c63430008170033","sourceMap":"222:1058:11:-:0;;;323:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;222:1058:11;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:12;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:12;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:12;;;2571:26;2522:89;-1:-1:-1;;1333:1:12;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:12;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:12;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:12;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:12:o;:::-;222:1058:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea26469706673582212203a33c02bd4ef2bf6f7845eca6f82a6920664ae1f11c600380aaa19683c0b6d9964736f6c63430008170033","sourceMap":"222:1058:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:43;;;;;;;;;;-1:-1:-1;273:43:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;273:43:11;;;;;;;;1561:300:1;;;;;;;;;;-1:-1:-1;1561:300:1;;;;;:::i;:::-;;:::i;2365:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;;;;;-1:-1:-1;3497:154:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:12;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:12;3323:113:1;;;;;;;;;;-1:-1:-1;3323:113:1;;;;;:::i;:::-;;:::i;1181:97:11:-;;;;;;;;;;-1:-1:-1;1250:21:11;1181:97;;;2324:25:12;;;2312:2;2297:18;1181:97:11;2178:177:12;632:363:11;;;;;;;;;;-1:-1:-1;632:363:11;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3335:33:12;;;3317:52;;3305:2;3290:18;632:363:11;3173:202:12;4143:578:1;;;;;;;;;;-1:-1:-1;4143:578:1;;;;;:::i;:::-;;:::i;4787:132::-;;;;;;;;;;-1:-1:-1;4787:132:1;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;;;;;-1:-1:-1;2185:118:1;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;;;;;-1:-1:-1;1920:208:1;;;;;:::i;:::-;;:::i;2518:93::-;;;;;;;;;;;;;:::i;373:206:11:-;;;;;;;;;;-1:-1:-1;373:206:11;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;;;;;-1:-1:-1;3718:144:1;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;;;;;-1:-1:-1;4985:208:1;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;;;;;-1:-1:-1;2677:255:1;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;;;;;-1:-1:-1;3928:153:1;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;632:363:11:-;793:6;834:14;840:7;834:5;:14::i;:::-;-1:-1:-1;;;;632:363:11;;;;;;;:::o;4143:578:1:-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:12;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;6439:15:12;;;4654:50:1;;;6421:34:12;6471:18;;;6464:34;;;6534:15;;6514:18;;;6507:43;6356:18;;4654:50:1;6181:375:12;4606:109:1;4223:498;4143:578;;;:::o;4787:132::-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:12;1652:18;;2048:30:1;1533:203:12;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;373:206:11:-;425:20;;;;:11;:20;;;;;;;;421:73;;;471:12;:7;481:2;471:12;:::i;:::-;461:22;;421:73;504:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;504:27:11;527:4;504:27;;;542:30;552:10;516:7;542:9;:30::i;:::-;373:206;:::o;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2324:25:12;;;2297:18;;16309:31:1;2178:177:12;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;11462:227::-;11513:21;11537:40;11553:1;11557:7;11574:1;11537:7;:40::i;:::-;11513:64;-1:-1:-1;;;;;;11591:27:1;;11587:96;;11641:31;;-1:-1:-1;;;11641:31:1;;;;;2324:25:12;;;2297:18;;11641:31:1;2178:177:12;8838:795:1;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:12;;15743:31:1;;;1679:51:12;1652:18;;15743:31:1;1533:203:12;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::12;;;15855::1;;312:18:12;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:12;;17430:25:1;;;1679:51:12;1652:18;;17430:25:1;1533:203:12;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:12;;17272:25:1;;;1679:51:12;1652:18;;17272:25:1;1533:203:12;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:12;;15189:27:1;;;1679:51:12;1652:18;;15189:27:1;1533:203:12;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2324:25:12;;;2297:18;;7298:31:1;2178:177:12;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8404:32:12;;7375:44:1;;;8386:51:12;8453:18;;;8446:34;;;8359:18;;7375:44:1;8212:274:12;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:12;1652:18;;10061:33:1;1533:203:12;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:12;1652:18;;10234:31:1;1533:203:12;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;391:131::-;-1:-1:-1;;;;;;465:32:12;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:12;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:12;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:12:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:12;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:12:o;2360:808::-;2457:6;2465;2473;2481;2489;2542:3;2530:9;2521:7;2517:23;2513:33;2510:53;;;2559:1;2556;2549:12;2510:53;2582:29;2601:9;2582:29;:::i;:::-;2572:39;;2630:38;2664:2;2653:9;2649:18;2630:38;:::i;:::-;2620:48;;2715:2;2704:9;2700:18;2687:32;2677:42;;2770:2;2759:9;2755:18;2742:32;2793:18;2834:2;2826:6;2823:14;2820:34;;;2850:1;2847;2840:12;2820:34;2888:6;2877:9;2873:22;2863:32;;2933:7;2926:4;2922:2;2918:13;2914:27;2904:55;;2955:1;2952;2945:12;2904:55;2995:2;2982:16;3021:2;3013:6;3010:14;3007:34;;;3037:1;3034;3027:12;3007:34;3082:7;3077:2;3068:6;3064:2;3060:15;3056:24;3053:37;3050:57;;;3103:1;3100;3093:12;3050:57;2360:808;;;;-1:-1:-1;2360:808:12;;-1:-1:-1;3134:2:12;3126:11;;3156:6;2360:808;-1:-1:-1;;;2360:808:12:o;3380:328::-;3457:6;3465;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3565:29;3584:9;3565:29;:::i;:::-;3555:39;;3613:38;3647:2;3636:9;3632:18;3613:38;:::i;:::-;3603:48;;3698:2;3687:9;3683:18;3670:32;3660:42;;3380:328;;;;;:::o;3713:186::-;3772:6;3825:2;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3864:29;3883:9;3864:29;:::i;3904:347::-;3969:6;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4069:29;4088:9;4069:29;:::i;:::-;4059:39;;4148:2;4137:9;4133:18;4120:32;4195:5;4188:13;4181:21;4174:5;4171:32;4161:60;;4217:1;4214;4207:12;4161:60;4240:5;4230:15;;;3904:347;;;;;:::o;4256:127::-;4317:10;4312:3;4308:20;4305:1;4298:31;4348:4;4345:1;4338:15;4372:4;4369:1;4362:15;4388:1138;4483:6;4491;4499;4507;4560:3;4548:9;4539:7;4535:23;4531:33;4528:53;;;4577:1;4574;4567:12;4528:53;4600:29;4619:9;4600:29;:::i;:::-;4590:39;;4648:38;4682:2;4671:9;4667:18;4648:38;:::i;:::-;4638:48;;4733:2;4722:9;4718:18;4705:32;4695:42;;4788:2;4777:9;4773:18;4760:32;4811:18;4852:2;4844:6;4841:14;4838:34;;;4868:1;4865;4858:12;4838:34;4906:6;4895:9;4891:22;4881:32;;4951:7;4944:4;4940:2;4936:13;4932:27;4922:55;;4973:1;4970;4963:12;4922:55;5009:2;4996:16;5031:2;5027;5024:10;5021:36;;;5037:18;;:::i;:::-;5112:2;5106:9;5080:2;5166:13;;-1:-1:-1;;5162:22:12;;;5186:2;5158:31;5154:40;5142:53;;;5210:18;;;5230:22;;;5207:46;5204:72;;;5256:18;;:::i;:::-;5296:10;5292:2;5285:22;5331:2;5323:6;5316:18;5371:7;5366:2;5361;5357;5353:11;5349:20;5346:33;5343:53;;;5392:1;5389;5382:12;5343:53;5448:2;5443;5439;5435:11;5430:2;5422:6;5418:15;5405:46;5493:1;5488:2;5483;5475:6;5471:15;5467:24;5460:35;5514:6;5504:16;;;;;;;4388:1138;;;;;;;:::o;5531:260::-;5599:6;5607;5660:2;5648:9;5639:7;5635:23;5631:32;5628:52;;;5676:1;5673;5666:12;5628:52;5699:29;5718:9;5699:29;:::i;:::-;5689:39;;5747:38;5781:2;5770:9;5766:18;5747:38;:::i;:::-;5737:48;;5531:260;;;;;:::o;5796:380::-;5875:1;5871:12;;;;5918;;;5939:61;;5993:4;5985:6;5981:17;5971:27;;5939:61;6046:2;6038:6;6035:14;6015:18;6012:38;6009:161;;6092:10;6087:3;6083:20;6080:1;6073:31;6127:4;6124:1;6117:15;6155:4;6152:1;6145:15;6009:161;;5796:380;;;:::o;6561:265::-;6634:9;;;6665;;6682:15;;;6676:22;;6662:37;6652:168;;6742:10;6737:3;6733:20;6730:1;6723:31;6777:4;6774:1;6767:15;6805:4;6802:1;6795:15;6831:496;7010:3;7048:6;7042:13;7064:66;7123:6;7118:3;7111:4;7103:6;7099:17;7064:66;:::i;:::-;7193:13;;7152:16;;;;7215:70;7193:13;7152:16;7262:4;7250:17;;7215:70;:::i;:::-;7301:20;;6831:496;-1:-1:-1;;;;6831:496:12:o;7332:489::-;-1:-1:-1;;;;;7601:15:12;;;7583:34;;7653:15;;7648:2;7633:18;;7626:43;7700:2;7685:18;;7678:34;;;7748:3;7743:2;7728:18;;7721:31;;;7526:4;;7769:46;;7795:19;;7787:6;7769:46;:::i;:::-;7761:54;7332:489;-1:-1:-1;;;;;;7332:489:12:o;7826:249::-;7895:6;7948:2;7936:9;7927:7;7923:23;7919:32;7916:52;;;7964:1;7961;7954:12;7916:52;7996:9;7990:16;8015:30;8039:5;8015:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getBalance()":"12065fe0","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","name()":"06fdde03","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b\",\"dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5","urls":["bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b","dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2882,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2881],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:1241:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2792,"nodeType":"ImportDirective","src":"138:82:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1281,"symbolAliases":[],"unitAlias":""},{"id":2881,"nodeType":"ContractDefinition","src":"222:1058:11","nodes":[{"id":2800,"nodeType":"VariableDeclaration","src":"273:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"305:11:11","scope":2881,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2799,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2797,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"273:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2798,"name":"bool","nodeType":"ElementaryTypeName","src":"292:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2808,"nodeType":"FunctionDefinition","src":"323:44:11","nodes":[],"body":{"id":2807,"nodeType":"Block","src":"365:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"344:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"356:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2805,"kind":"baseConstructorSpecifier","modifierName":{"id":2802,"name":"ERC721","nameLocations":["337:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"337:6:11"},"nodeType":"ModifierInvocation","src":"337:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[],"src":"334:2:11"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"365:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2837,"nodeType":"FunctionDefinition","src":"373:206:11","nodes":[],"body":{"id":2836,"nodeType":"Block","src":"411:168:11","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2813,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"425:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2815,"indexExpression":{"id":2814,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"425:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2823,"nodeType":"IfStatement","src":"421:73:11","trueBody":{"id":2822,"nodeType":"Block","src":"447:47:11","statements":[{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2816,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"461:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2817,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"471:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"481:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"471:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"461:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"461:22:11"}]}},{"expression":{"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2824,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"504:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2826,"indexExpression":{"id":2825,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"516:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"504:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"527:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"504:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2829,"nodeType":"ExpressionStatement","src":"504:27:11"},{"expression":{"arguments":[{"expression":{"id":2831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"552:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"556:6:11","memberName":"sender","nodeType":"MemberAccess","src":"552:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2833,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"564:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2830,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"542:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"542:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"542:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"382:4:11","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"tokenId","nameLocation":"395:7:11","nodeType":"VariableDeclaration","scope":2837,"src":"387:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:17:11"},"returnParameters":{"id":2812,"nodeType":"ParameterList","parameters":[],"src":"411:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2860,"nodeType":"FunctionDefinition","src":"632:363:11","nodes":[],"body":{"id":2859,"nodeType":"Block","src":"801:194:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2852,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"840:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2851,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"834:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"834:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2854,"nodeType":"ExpressionStatement","src":"834:14:11"},{"expression":{"expression":{"expression":{"id":2855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"958:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"963:16:11","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2860,"src":"958:21:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"980:8:11","memberName":"selector","nodeType":"MemberAccess","src":"958:30:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2850,"id":2858,"nodeType":"Return","src":"951:37:11"}]},"baseFunctions":[1279],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"641:16:11","overrides":{"id":2847,"nodeType":"OverrideSpecifier","overrides":[],"src":"775:8:11"},"parameters":{"id":2846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2839,"mutability":"mutable","name":"operator","nameLocation":"675:8:11","nodeType":"VariableDeclaration","scope":2860,"src":"667:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2838,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"from","nameLocation":"701:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"693:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2840,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2843,"mutability":"mutable","name":"tokenId","nameLocation":"723:7:11","nodeType":"VariableDeclaration","scope":2860,"src":"715:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2845,"mutability":"mutable","name":"data","nameLocation":"755:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"740:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2844,"name":"bytes","nodeType":"ElementaryTypeName","src":"740:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"657:108:11"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2860,"src":"793:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2848,"name":"bytes4","nodeType":"ElementaryTypeName","src":"793:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"792:8:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2864,"nodeType":"FunctionDefinition","src":"1026:30:11","nodes":[],"body":{"id":2863,"nodeType":"Block","src":"1054:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2861,"nodeType":"ParameterList","parameters":[],"src":"1034:2:11"},"returnParameters":{"id":2862,"nodeType":"ParameterList","parameters":[],"src":"1054:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2868,"nodeType":"FunctionDefinition","src":"1095:29:11","nodes":[],"body":{"id":2867,"nodeType":"Block","src":"1122:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"1102:2:11"},"returnParameters":{"id":2866,"nodeType":"ParameterList","parameters":[],"src":"1122:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2880,"nodeType":"FunctionDefinition","src":"1181:97:11","nodes":[],"body":{"id":2879,"nodeType":"Block","src":"1233:45:11","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1258:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}],"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1250:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2873,"name":"address","nodeType":"ElementaryTypeName","src":"1250:7:11","typeDescriptions":{}}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1264:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1250:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2872,"id":2878,"nodeType":"Return","src":"1243:28:11"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"1190:10:11","parameters":{"id":2869,"nodeType":"ParameterList","parameters":[],"src":"1200:2:11"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"1224:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1223:9:11"},"scope":2881,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2793,"name":"ERC721","nameLocations":["243:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"243:6:11"},"id":2794,"nodeType":"InheritanceSpecifier","src":"243:6:11"},{"baseName":{"id":2795,"name":"IERC721Receiver","nameLocations":["251:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":1280,"src":"251:15:11"},"id":2796,"nodeType":"InheritanceSpecifier","src":"251:15:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2881,1280,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"231:8:11","scope":2882,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/src/MNISTNFT.sol b/examples/on-chain_mnist/contracts/src/MNISTNFT.sol index 20e7f39..a5d5bc1 100644 --- a/examples/on-chain_mnist/contracts/src/MNISTNFT.sol +++ b/examples/on-chain_mnist/contracts/src/MNISTNFT.sol @@ -2,15 +2,14 @@ pragma solidity ^0.8.0; import "../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol"; +import "../lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol"; -contract MNISTNFT is ERC721 { +contract MNISTNFT is ERC721, IERC721Receiver { mapping(uint256 => bool) public tokenExists; constructor() ERC721("MNISTNFT", "MNIST") {} function mint(uint256 tokenId) public { - require(!tokenExists[tokenId], "Token already minted!"); - if (tokenExists[tokenId]) { tokenId = tokenId * 10; } @@ -19,10 +18,29 @@ contract MNISTNFT is ERC721 { _safeMint(msg.sender, tokenId); } - - // Not secure; anyone can withdraw - function withdraw() public { - (bool success, ) = msg.sender.call{value: address(this).balance}(""); - require(success, "Transfer failed"); + + // Implement the onERC721Received function + function onERC721Received( + address operator, + address from, + uint256 tokenId, + bytes calldata data + ) external override returns (bytes4) { + // Let it burn + _burn(tokenId); + + // Return the magic value to indicate successful reception and burning of the token + return this.onERC721Received.selector; + } + + // Fallback function + fallback() external payable {} + + // Function to receive Ether + receive() external payable {} + + // Function to get the balance of the contract + function getBalance() public view returns (uint256) { + return address(this).balance; } } \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol b/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol new file mode 100644 index 0000000..9db28f5 --- /dev/null +++ b/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol @@ -0,0 +1,1542 @@ + +// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) +pragma solidity ^0.8.20; + +/** + * @dev Standard ERC20 Errors + * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. + */ +interface IERC20Errors { + /** + * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + * @param balance Current balance for the interacting account. + * @param needed Minimum amount required to perform a transfer. + */ + error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); + + /** + * @dev Indicates a failure with the token `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + */ + error ERC20InvalidSender(address sender); + + /** + * @dev Indicates a failure with the token `receiver`. Used in transfers. + * @param receiver Address to which tokens are being transferred. + */ + error ERC20InvalidReceiver(address receiver); + + /** + * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. + * @param spender Address that may be allowed to operate on tokens without being their owner. + * @param allowance Amount of tokens a `spender` is allowed to operate with. + * @param needed Minimum amount required to perform a transfer. + */ + error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); + + /** + * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. + * @param approver Address initiating an approval operation. + */ + error ERC20InvalidApprover(address approver); + + /** + * @dev Indicates a failure with the `spender` to be approved. Used in approvals. + * @param spender Address that may be allowed to operate on tokens without being their owner. + */ + error ERC20InvalidSpender(address spender); +} + +/** + * @dev Standard ERC721 Errors + * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. + */ +interface IERC721Errors { + /** + * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. + * Used in balance queries. + * @param owner Address of the current owner of a token. + */ + error ERC721InvalidOwner(address owner); + + /** + * @dev Indicates a `tokenId` whose `owner` is the zero address. + * @param tokenId Identifier number of a token. + */ + error ERC721NonexistentToken(uint256 tokenId); + + /** + * @dev Indicates an error related to the ownership over a particular token. Used in transfers. + * @param sender Address whose tokens are being transferred. + * @param tokenId Identifier number of a token. + * @param owner Address of the current owner of a token. + */ + error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); + + /** + * @dev Indicates a failure with the token `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + */ + error ERC721InvalidSender(address sender); + + /** + * @dev Indicates a failure with the token `receiver`. Used in transfers. + * @param receiver Address to which tokens are being transferred. + */ + error ERC721InvalidReceiver(address receiver); + + /** + * @dev Indicates a failure with the `operator`’s approval. Used in transfers. + * @param operator Address that may be allowed to operate on tokens without being their owner. + * @param tokenId Identifier number of a token. + */ + error ERC721InsufficientApproval(address operator, uint256 tokenId); + + /** + * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. + * @param approver Address initiating an approval operation. + */ + error ERC721InvalidApprover(address approver); + + /** + * @dev Indicates a failure with the `operator` to be approved. Used in approvals. + * @param operator Address that may be allowed to operate on tokens without being their owner. + */ + error ERC721InvalidOperator(address operator); +} + +/** + * @dev Standard ERC1155 Errors + * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. + */ +interface IERC1155Errors { + /** + * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + * @param balance Current balance for the interacting account. + * @param needed Minimum amount required to perform a transfer. + * @param tokenId Identifier number of a token. + */ + error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); + + /** + * @dev Indicates a failure with the token `sender`. Used in transfers. + * @param sender Address whose tokens are being transferred. + */ + error ERC1155InvalidSender(address sender); + + /** + * @dev Indicates a failure with the token `receiver`. Used in transfers. + * @param receiver Address to which tokens are being transferred. + */ + error ERC1155InvalidReceiver(address receiver); + + /** + * @dev Indicates a failure with the `operator`’s approval. Used in transfers. + * @param operator Address that may be allowed to operate on tokens without being their owner. + * @param owner Address of the current owner of a token. + */ + error ERC1155MissingApprovalForAll(address operator, address owner); + + /** + * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. + * @param approver Address initiating an approval operation. + */ + error ERC1155InvalidApprover(address approver); + + /** + * @dev Indicates a failure with the `operator` to be approved. Used in approvals. + * @param operator Address that may be allowed to operate on tokens without being their owner. + */ + error ERC1155InvalidOperator(address operator); + + /** + * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. + * Used in batch transfers. + * @param idsLength Length of the array of token identifiers + * @param valuesLength Length of the array of token amounts + */ + error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); +} + +// File: @openzeppelin/contracts/utils/math/SignedMath.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol) + +pragma solidity ^0.8.20; + +/** + * @dev Standard signed math utilities missing in the Solidity language. + */ +library SignedMath { + /** + * @dev Returns the largest of two signed numbers. + */ + function max(int256 a, int256 b) internal pure returns (int256) { + return a > b ? a : b; + } + + /** + * @dev Returns the smallest of two signed numbers. + */ + function min(int256 a, int256 b) internal pure returns (int256) { + return a < b ? a : b; + } + + /** + * @dev Returns the average of two signed numbers without overflow. + * The result is rounded towards zero. + */ + function average(int256 a, int256 b) internal pure returns (int256) { + // Formula from the book "Hacker's Delight" + int256 x = (a & b) + ((a ^ b) >> 1); + return x + (int256(uint256(x) >> 255) & (a ^ b)); + } + + /** + * @dev Returns the absolute unsigned value of a signed value. + */ + function abs(int256 n) internal pure returns (uint256) { + unchecked { + // must be unchecked in order to support `n = type(int256).min` + return uint256(n >= 0 ? n : -n); + } + } +} + +// File: @openzeppelin/contracts/utils/math/Math.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol) + +pragma solidity ^0.8.20; + +/** + * @dev Standard math utilities missing in the Solidity language. + */ +library Math { + /** + * @dev Muldiv operation overflow. + */ + error MathOverflowedMulDiv(); + + enum Rounding { + Floor, // Toward negative infinity + Ceil, // Toward positive infinity + Trunc, // Toward zero + Expand // Away from zero + } + + /** + * @dev Returns the addition of two unsigned integers, with an overflow flag. + */ + function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { + unchecked { + uint256 c = a + b; + if (c < a) return (false, 0); + return (true, c); + } + } + + /** + * @dev Returns the subtraction of two unsigned integers, with an overflow flag. + */ + function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { + unchecked { + if (b > a) return (false, 0); + return (true, a - b); + } + } + + /** + * @dev Returns the multiplication of two unsigned integers, with an overflow flag. + */ + function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { + unchecked { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) return (true, 0); + uint256 c = a * b; + if (c / a != b) return (false, 0); + return (true, c); + } + } + + /** + * @dev Returns the division of two unsigned integers, with a division by zero flag. + */ + function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { + unchecked { + if (b == 0) return (false, 0); + return (true, a / b); + } + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. + */ + function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { + unchecked { + if (b == 0) return (false, 0); + return (true, a % b); + } + } + + /** + * @dev Returns the largest of two numbers. + */ + function max(uint256 a, uint256 b) internal pure returns (uint256) { + return a > b ? a : b; + } + + /** + * @dev Returns the smallest of two numbers. + */ + function min(uint256 a, uint256 b) internal pure returns (uint256) { + return a < b ? a : b; + } + + /** + * @dev Returns the average of two numbers. The result is rounded towards + * zero. + */ + function average(uint256 a, uint256 b) internal pure returns (uint256) { + // (a + b) / 2 can overflow. + return (a & b) + (a ^ b) / 2; + } + + /** + * @dev Returns the ceiling of the division of two numbers. + * + * This differs from standard division with `/` in that it rounds towards infinity instead + * of rounding towards zero. + */ + function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { + if (b == 0) { + // Guarantee the same behavior as in a regular Solidity division. + return a / b; + } + + // (a + b - 1) / b can overflow on addition, so we distribute. + return a == 0 ? 0 : (a - 1) / b + 1; + } + + /** + * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or + * denominator == 0. + * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by + * Uniswap Labs also under MIT license. + */ + function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { + unchecked { + // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use + // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 + // variables such that product = prod1 * 2^256 + prod0. + uint256 prod0 = x * y; // Least significant 256 bits of the product + uint256 prod1; // Most significant 256 bits of the product + assembly { + let mm := mulmod(x, y, not(0)) + prod1 := sub(sub(mm, prod0), lt(mm, prod0)) + } + + // Handle non-overflow cases, 256 by 256 division. + if (prod1 == 0) { + // Solidity will revert if denominator == 0, unlike the div opcode on its own. + // The surrounding unchecked block does not change this fact. + // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic. + return prod0 / denominator; + } + + // Make sure the result is less than 2^256. Also prevents denominator == 0. + if (denominator <= prod1) { + revert MathOverflowedMulDiv(); + } + + /////////////////////////////////////////////// + // 512 by 256 division. + /////////////////////////////////////////////// + + // Make division exact by subtracting the remainder from [prod1 prod0]. + uint256 remainder; + assembly { + // Compute remainder using mulmod. + remainder := mulmod(x, y, denominator) + + // Subtract 256 bit number from 512 bit number. + prod1 := sub(prod1, gt(remainder, prod0)) + prod0 := sub(prod0, remainder) + } + + // Factor powers of two out of denominator and compute largest power of two divisor of denominator. + // Always >= 1. See https://cs.stackexchange.com/q/138556/92363. + + uint256 twos = denominator & (0 - denominator); + assembly { + // Divide denominator by twos. + denominator := div(denominator, twos) + + // Divide [prod1 prod0] by twos. + prod0 := div(prod0, twos) + + // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. + twos := add(div(sub(0, twos), twos), 1) + } + + // Shift in bits from prod1 into prod0. + prod0 |= prod1 * twos; + + // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such + // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for + // four bits. That is, denominator * inv = 1 mod 2^4. + uint256 inverse = (3 * denominator) ^ 2; + + // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also + // works in modular arithmetic, doubling the correct bits in each step. + inverse *= 2 - denominator * inverse; // inverse mod 2^8 + inverse *= 2 - denominator * inverse; // inverse mod 2^16 + inverse *= 2 - denominator * inverse; // inverse mod 2^32 + inverse *= 2 - denominator * inverse; // inverse mod 2^64 + inverse *= 2 - denominator * inverse; // inverse mod 2^128 + inverse *= 2 - denominator * inverse; // inverse mod 2^256 + + // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. + // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is + // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 + // is no longer required. + result = prod0 * inverse; + return result; + } + } + + /** + * @notice Calculates x * y / denominator with full precision, following the selected rounding direction. + */ + function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { + uint256 result = mulDiv(x, y, denominator); + if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) { + result += 1; + } + return result; + } + + /** + * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded + * towards zero. + * + * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11). + */ + function sqrt(uint256 a) internal pure returns (uint256) { + if (a == 0) { + return 0; + } + + // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target. + // + // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have + // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`. + // + // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)` + // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))` + // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` + // + // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit. + uint256 result = 1 << (log2(a) >> 1); + + // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128, + // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at + // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision + // into the expected uint128 result. + unchecked { + result = (result + a / result) >> 1; + result = (result + a / result) >> 1; + result = (result + a / result) >> 1; + result = (result + a / result) >> 1; + result = (result + a / result) >> 1; + result = (result + a / result) >> 1; + result = (result + a / result) >> 1; + return min(result, a / result); + } + } + + /** + * @notice Calculates sqrt(a), following the selected rounding direction. + */ + function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = sqrt(a); + return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0); + } + } + + /** + * @dev Return the log in base 2 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log2(uint256 value) internal pure returns (uint256) { + uint256 result = 0; + unchecked { + if (value >> 128 > 0) { + value >>= 128; + result += 128; + } + if (value >> 64 > 0) { + value >>= 64; + result += 64; + } + if (value >> 32 > 0) { + value >>= 32; + result += 32; + } + if (value >> 16 > 0) { + value >>= 16; + result += 16; + } + if (value >> 8 > 0) { + value >>= 8; + result += 8; + } + if (value >> 4 > 0) { + value >>= 4; + result += 4; + } + if (value >> 2 > 0) { + value >>= 2; + result += 2; + } + if (value >> 1 > 0) { + result += 1; + } + } + return result; + } + + /** + * @dev Return the log in base 2, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log2(value); + return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0); + } + } + + /** + * @dev Return the log in base 10 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log10(uint256 value) internal pure returns (uint256) { + uint256 result = 0; + unchecked { + if (value >= 10 ** 64) { + value /= 10 ** 64; + result += 64; + } + if (value >= 10 ** 32) { + value /= 10 ** 32; + result += 32; + } + if (value >= 10 ** 16) { + value /= 10 ** 16; + result += 16; + } + if (value >= 10 ** 8) { + value /= 10 ** 8; + result += 8; + } + if (value >= 10 ** 4) { + value /= 10 ** 4; + result += 4; + } + if (value >= 10 ** 2) { + value /= 10 ** 2; + result += 2; + } + if (value >= 10 ** 1) { + result += 1; + } + } + return result; + } + + /** + * @dev Return the log in base 10, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log10(value); + return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0); + } + } + + /** + * @dev Return the log in base 256 of a positive value rounded towards zero. + * Returns 0 if given 0. + * + * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. + */ + function log256(uint256 value) internal pure returns (uint256) { + uint256 result = 0; + unchecked { + if (value >> 128 > 0) { + value >>= 128; + result += 16; + } + if (value >> 64 > 0) { + value >>= 64; + result += 8; + } + if (value >> 32 > 0) { + value >>= 32; + result += 4; + } + if (value >> 16 > 0) { + value >>= 16; + result += 2; + } + if (value >> 8 > 0) { + result += 1; + } + } + return result; + } + + /** + * @dev Return the log in base 256, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log256(value); + return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0); + } + } + + /** + * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers. + */ + function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) { + return uint8(rounding) % 2 == 1; + } +} + +// File: @openzeppelin/contracts/utils/Strings.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol) + +pragma solidity ^0.8.20; + + + +/** + * @dev String operations. + */ +library Strings { + bytes16 private constant HEX_DIGITS = "0123456789abcdef"; + uint8 private constant ADDRESS_LENGTH = 20; + + /** + * @dev The `value` string doesn't fit in the specified `length`. + */ + error StringsInsufficientHexLength(uint256 value, uint256 length); + + /** + * @dev Converts a `uint256` to its ASCII `string` decimal representation. + */ + function toString(uint256 value) internal pure returns (string memory) { + unchecked { + uint256 length = Math.log10(value) + 1; + string memory buffer = new string(length); + uint256 ptr; + /// @solidity memory-safe-assembly + assembly { + ptr := add(buffer, add(32, length)) + } + while (true) { + ptr--; + /// @solidity memory-safe-assembly + assembly { + mstore8(ptr, byte(mod(value, 10), HEX_DIGITS)) + } + value /= 10; + if (value == 0) break; + } + return buffer; + } + } + + /** + * @dev Converts a `int256` to its ASCII `string` decimal representation. + */ + function toStringSigned(int256 value) internal pure returns (string memory) { + return string.concat(value < 0 ? "-" : "", toString(SignedMath.abs(value))); + } + + /** + * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. + */ + function toHexString(uint256 value) internal pure returns (string memory) { + unchecked { + return toHexString(value, Math.log256(value) + 1); + } + } + + /** + * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. + */ + function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { + uint256 localValue = value; + bytes memory buffer = new bytes(2 * length + 2); + buffer[0] = "0"; + buffer[1] = "x"; + for (uint256 i = 2 * length + 1; i > 1; --i) { + buffer[i] = HEX_DIGITS[localValue & 0xf]; + localValue >>= 4; + } + if (localValue != 0) { + revert StringsInsufficientHexLength(value, length); + } + return string(buffer); + } + + /** + * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal + * representation. + */ + function toHexString(address addr) internal pure returns (string memory) { + return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH); + } + + /** + * @dev Returns true if the two strings are equal. + */ + function equal(string memory a, string memory b) internal pure returns (bool) { + return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b)); + } +} + +// File: @openzeppelin/contracts/utils/Context.sol + + +// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) + +pragma solidity ^0.8.20; + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } + + function _contextSuffixLength() internal view virtual returns (uint256) { + return 0; + } +} + +// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol) + +pragma solidity ^0.8.20; + +/** + * @title ERC721 token receiver interface + * @dev Interface for any contract that wants to support safeTransfers + * from ERC721 asset contracts. + */ +interface IERC721Receiver { + /** + * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} + * by `operator` from `from`, this function is called. + * + * It must return its Solidity selector to confirm the token transfer. + * If any other value is returned or the interface is not implemented by the recipient, the transfer will be + * reverted. + * + * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. + */ + function onERC721Received( + address operator, + address from, + uint256 tokenId, + bytes calldata data + ) external returns (bytes4); +} + +// File: @openzeppelin/contracts/utils/introspection/IERC165.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol) + +pragma solidity ^0.8.20; + +/** + * @dev Interface of the ERC165 standard, as defined in the + * https://eips.ethereum.org/EIPS/eip-165[EIP]. + * + * Implementers can declare support of contract interfaces, which can then be + * queried by others ({ERC165Checker}). + * + * For an implementation, see {ERC165}. + */ +interface IERC165 { + /** + * @dev Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} + +// File: @openzeppelin/contracts/utils/introspection/ERC165.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol) + +pragma solidity ^0.8.20; + + +/** + * @dev Implementation of the {IERC165} interface. + * + * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check + * for the additional interface id that will be supported. For example: + * + * ```solidity + * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); + * } + * ``` + */ +abstract contract ERC165 is IERC165 { + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { + return interfaceId == type(IERC165).interfaceId; + } +} + +// File: @openzeppelin/contracts/token/ERC721/IERC721.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol) + +pragma solidity ^0.8.20; + + +/** + * @dev Required interface of an ERC721 compliant contract. + */ +interface IERC721 is IERC165 { + /** + * @dev Emitted when `tokenId` token is transferred from `from` to `to`. + */ + event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); + + /** + * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. + */ + event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); + + /** + * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. + */ + event ApprovalForAll(address indexed owner, address indexed operator, bool approved); + + /** + * @dev Returns the number of tokens in ``owner``'s account. + */ + function balanceOf(address owner) external view returns (uint256 balance); + + /** + * @dev Returns the owner of the `tokenId` token. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function ownerOf(uint256 tokenId) external view returns (address owner); + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon + * a safe transfer. + * + * Emits a {Transfer} event. + */ + function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients + * are aware of the ERC721 protocol to prevent tokens from being forever locked. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or + * {setApprovalForAll}. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon + * a safe transfer. + * + * Emits a {Transfer} event. + */ + function safeTransferFrom(address from, address to, uint256 tokenId) external; + + /** + * @dev Transfers `tokenId` token from `from` to `to`. + * + * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 + * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must + * understand this adds an external call which potentially creates a reentrancy vulnerability. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must be owned by `from`. + * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 tokenId) external; + + /** + * @dev Gives permission to `to` to transfer `tokenId` token to another account. + * The approval is cleared when the token is transferred. + * + * Only a single account can be approved at a time, so approving the zero address clears previous approvals. + * + * Requirements: + * + * - The caller must own the token or be an approved operator. + * - `tokenId` must exist. + * + * Emits an {Approval} event. + */ + function approve(address to, uint256 tokenId) external; + + /** + * @dev Approve or remove `operator` as an operator for the caller. + * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. + * + * Requirements: + * + * - The `operator` cannot be the address zero. + * + * Emits an {ApprovalForAll} event. + */ + function setApprovalForAll(address operator, bool approved) external; + + /** + * @dev Returns the account approved for `tokenId` token. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function getApproved(uint256 tokenId) external view returns (address operator); + + /** + * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. + * + * See {setApprovalForAll} + */ + function isApprovedForAll(address owner, address operator) external view returns (bool); +} + +// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol) + +pragma solidity ^0.8.20; + + +/** + * @title ERC-721 Non-Fungible Token Standard, optional metadata extension + * @dev See https://eips.ethereum.org/EIPS/eip-721 + */ +interface IERC721Metadata is IERC721 { + /** + * @dev Returns the token collection name. + */ + function name() external view returns (string memory); + + /** + * @dev Returns the token collection symbol. + */ + function symbol() external view returns (string memory); + + /** + * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. + */ + function tokenURI(uint256 tokenId) external view returns (string memory); +} + +// File: @openzeppelin/contracts/token/ERC721/ERC721.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/ERC721.sol) + +pragma solidity ^0.8.20; + + + + + + + + +/** + * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including + * the Metadata extension, but not including the Enumerable extension, which is available separately as + * {ERC721Enumerable}. + */ +abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors { + using Strings for uint256; + + // Token name + string private _name; + + // Token symbol + string private _symbol; + + mapping(uint256 tokenId => address) private _owners; + + mapping(address owner => uint256) private _balances; + + mapping(uint256 tokenId => address) private _tokenApprovals; + + mapping(address owner => mapping(address operator => bool)) private _operatorApprovals; + + /** + * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { + return + interfaceId == type(IERC721).interfaceId || + interfaceId == type(IERC721Metadata).interfaceId || + super.supportsInterface(interfaceId); + } + + /** + * @dev See {IERC721-balanceOf}. + */ + function balanceOf(address owner) public view virtual returns (uint256) { + if (owner == address(0)) { + revert ERC721InvalidOwner(address(0)); + } + return _balances[owner]; + } + + /** + * @dev See {IERC721-ownerOf}. + */ + function ownerOf(uint256 tokenId) public view virtual returns (address) { + return _requireOwned(tokenId); + } + + /** + * @dev See {IERC721Metadata-name}. + */ + function name() public view virtual returns (string memory) { + return _name; + } + + /** + * @dev See {IERC721Metadata-symbol}. + */ + function symbol() public view virtual returns (string memory) { + return _symbol; + } + + /** + * @dev See {IERC721Metadata-tokenURI}. + */ + function tokenURI(uint256 tokenId) public view virtual returns (string memory) { + _requireOwned(tokenId); + + string memory baseURI = _baseURI(); + return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : ""; + } + + /** + * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each + * token will be the concatenation of the `baseURI` and the `tokenId`. Empty + * by default, can be overridden in child contracts. + */ + function _baseURI() internal view virtual returns (string memory) { + return ""; + } + + /** + * @dev See {IERC721-approve}. + */ + function approve(address to, uint256 tokenId) public virtual { + _approve(to, tokenId, _msgSender()); + } + + /** + * @dev See {IERC721-getApproved}. + */ + function getApproved(uint256 tokenId) public view virtual returns (address) { + _requireOwned(tokenId); + + return _getApproved(tokenId); + } + + /** + * @dev See {IERC721-setApprovalForAll}. + */ + function setApprovalForAll(address operator, bool approved) public virtual { + _setApprovalForAll(_msgSender(), operator, approved); + } + + /** + * @dev See {IERC721-isApprovedForAll}. + */ + function isApprovedForAll(address owner, address operator) public view virtual returns (bool) { + return _operatorApprovals[owner][operator]; + } + + /** + * @dev See {IERC721-transferFrom}. + */ + function transferFrom(address from, address to, uint256 tokenId) public virtual { + if (to == address(0)) { + revert ERC721InvalidReceiver(address(0)); + } + // Setting an "auth" arguments enables the `_isAuthorized` check which verifies that the token exists + // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here. + address previousOwner = _update(to, tokenId, _msgSender()); + if (previousOwner != from) { + revert ERC721IncorrectOwner(from, tokenId, previousOwner); + } + } + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom(address from, address to, uint256 tokenId) public { + safeTransferFrom(from, to, tokenId, ""); + } + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual { + transferFrom(from, to, tokenId); + _checkOnERC721Received(from, to, tokenId, data); + } + + /** + * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist + * + * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the + * core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances + * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by + * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`. + */ + function _ownerOf(uint256 tokenId) internal view virtual returns (address) { + return _owners[tokenId]; + } + + /** + * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted. + */ + function _getApproved(uint256 tokenId) internal view virtual returns (address) { + return _tokenApprovals[tokenId]; + } + + /** + * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in + * particular (ignoring whether it is owned by `owner`). + * + * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this + * assumption. + */ + function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) { + return + spender != address(0) && + (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender); + } + + /** + * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner. + * Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets + * the `spender` for the specific `tokenId`. + * + * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this + * assumption. + */ + function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual { + if (!_isAuthorized(owner, spender, tokenId)) { + if (owner == address(0)) { + revert ERC721NonexistentToken(tokenId); + } else { + revert ERC721InsufficientApproval(spender, tokenId); + } + } + } + + /** + * @dev Unsafe write access to the balances, used by extensions that "mint" tokens using an {ownerOf} override. + * + * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that + * a uint256 would ever overflow from increments when these increments are bounded to uint128 values. + * + * WARNING: Increasing an account's balance using this function tends to be paired with an override of the + * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership + * remain consistent with one another. + */ + function _increaseBalance(address account, uint128 value) internal virtual { + unchecked { + _balances[account] += value; + } + } + + /** + * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner + * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update. + * + * The `auth` argument is optional. If the value passed is non 0, then this function will check that + * `auth` is either the owner of the token, or approved to operate on the token (by the owner). + * + * Emits a {Transfer} event. + * + * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}. + */ + function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) { + address from = _ownerOf(tokenId); + + // Perform (optional) operator check + if (auth != address(0)) { + _checkAuthorized(from, auth, tokenId); + } + + // Execute the update + if (from != address(0)) { + // Clear approval. No need to re-authorize or emit the Approval event + _approve(address(0), tokenId, address(0), false); + + unchecked { + _balances[from] -= 1; + } + } + + if (to != address(0)) { + unchecked { + _balances[to] += 1; + } + } + + _owners[tokenId] = to; + + emit Transfer(from, to, tokenId); + + return from; + } + + /** + * @dev Mints `tokenId` and transfers it to `to`. + * + * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible + * + * Requirements: + * + * - `tokenId` must not exist. + * - `to` cannot be the zero address. + * + * Emits a {Transfer} event. + */ + function _mint(address to, uint256 tokenId) internal { + if (to == address(0)) { + revert ERC721InvalidReceiver(address(0)); + } + address previousOwner = _update(to, tokenId, address(0)); + if (previousOwner != address(0)) { + revert ERC721InvalidSender(address(0)); + } + } + + /** + * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance. + * + * Requirements: + * + * - `tokenId` must not exist. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function _safeMint(address to, uint256 tokenId) internal { + _safeMint(to, tokenId, ""); + } + + /** + * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is + * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. + */ + function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual { + _mint(to, tokenId); + _checkOnERC721Received(address(0), to, tokenId, data); + } + + /** + * @dev Destroys `tokenId`. + * The approval is cleared when the token is burned. + * This is an internal function that does not check if the sender is authorized to operate on the token. + * + * Requirements: + * + * - `tokenId` must exist. + * + * Emits a {Transfer} event. + */ + function _burn(uint256 tokenId) internal { + address previousOwner = _update(address(0), tokenId, address(0)); + if (previousOwner == address(0)) { + revert ERC721NonexistentToken(tokenId); + } + } + + /** + * @dev Transfers `tokenId` from `from` to `to`. + * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - `tokenId` token must be owned by `from`. + * + * Emits a {Transfer} event. + */ + function _transfer(address from, address to, uint256 tokenId) internal { + if (to == address(0)) { + revert ERC721InvalidReceiver(address(0)); + } + address previousOwner = _update(to, tokenId, address(0)); + if (previousOwner == address(0)) { + revert ERC721NonexistentToken(tokenId); + } else if (previousOwner != from) { + revert ERC721IncorrectOwner(from, tokenId, previousOwner); + } + } + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients + * are aware of the ERC721 standard to prevent tokens from being forever locked. + * + * `data` is additional data, it has no specified format and it is sent in call to `to`. + * + * This internal function is like {safeTransferFrom} in the sense that it invokes + * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g. + * implement alternative mechanisms to perform token transfer, such as signature-based. + * + * Requirements: + * + * - `tokenId` token must exist and be owned by `from`. + * - `to` cannot be the zero address. + * - `from` cannot be the zero address. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function _safeTransfer(address from, address to, uint256 tokenId) internal { + _safeTransfer(from, to, tokenId, ""); + } + + /** + * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is + * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. + */ + function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual { + _transfer(from, to, tokenId); + _checkOnERC721Received(from, to, tokenId, data); + } + + /** + * @dev Approve `to` to operate on `tokenId` + * + * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is + * either the owner of the token, or approved to operate on all tokens held by this owner. + * + * Emits an {Approval} event. + * + * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. + */ + function _approve(address to, uint256 tokenId, address auth) internal { + _approve(to, tokenId, auth, true); + } + + /** + * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not + * emitted in the context of transfers. + */ + function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual { + // Avoid reading the owner unless necessary + if (emitEvent || auth != address(0)) { + address owner = _requireOwned(tokenId); + + // We do not use _isAuthorized because single-token approvals should not be able to call approve + if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) { + revert ERC721InvalidApprover(auth); + } + + if (emitEvent) { + emit Approval(owner, to, tokenId); + } + } + + _tokenApprovals[tokenId] = to; + } + + /** + * @dev Approve `operator` to operate on all of `owner` tokens + * + * Requirements: + * - operator can't be the address zero. + * + * Emits an {ApprovalForAll} event. + */ + function _setApprovalForAll(address owner, address operator, bool approved) internal virtual { + if (operator == address(0)) { + revert ERC721InvalidOperator(operator); + } + _operatorApprovals[owner][operator] = approved; + emit ApprovalForAll(owner, operator, approved); + } + + /** + * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned). + * Returns the owner. + * + * Overrides to ownership logic should be done to {_ownerOf}. + */ + function _requireOwned(uint256 tokenId) internal view returns (address) { + address owner = _ownerOf(tokenId); + if (owner == address(0)) { + revert ERC721NonexistentToken(tokenId); + } + return owner; + } + + /** + * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the + * recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract. + * + * @param from address representing the previous owner of the given token ID + * @param to target address that will receive the tokens + * @param tokenId uint256 ID of the token to be transferred + * @param data bytes optional data to send along with the call + */ + function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory data) private { + if (to.code.length > 0) { + try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) { + if (retval != IERC721Receiver.onERC721Received.selector) { + revert ERC721InvalidReceiver(to); + } + } catch (bytes memory reason) { + if (reason.length == 0) { + revert ERC721InvalidReceiver(to); + } else { + /// @solidity memory-safe-assembly + assembly { + revert(add(32, reason), mload(reason)) + } + } + } + } + } +} + +// File: MNISTNFT.sol + + +pragma solidity ^0.8.0; + + + +contract MNISTNFT is ERC721, IERC721Receiver { + mapping(uint256 => bool) public tokenExists; + + constructor() ERC721("MNISTNFT", "MNIST") {} + + function mint(uint256 tokenId) public { + if (tokenExists[tokenId]) { + tokenId = tokenId * 10; + } + + tokenExists[tokenId] = true; + + _safeMint(msg.sender, tokenId); + } + + // Implement the onERC721Received function + function onERC721Received( + address operator, + address from, + uint256 tokenId, + bytes calldata data + ) external override returns (bytes4) { + // Let it burn + _burn(tokenId); + + // Return the magic value to indicate successful reception and burning of the token + return this.onERC721Received.selector; + } + + // Fallback function + fallback() external payable {} + + // Function to receive Ether + receive() external payable {} + + // Function to get the balance of the contract + function getBalance() public view returns (uint256) { + return address(this).balance; + } +} \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index ab4a322..5cda465 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -294,7 +294,7 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: if is_none: print("Warning: Proof is None. Skipping proof verification.") else: - print("Proof retrieved! ✅") + print("Signed proof retrieved! ✅") signer = web3.eth.account.recover_message(signedProofMessage, signed_proof_elements) assert signer.lower() == account.address.lower() print("Proof signature verified! 🔥") @@ -318,7 +318,6 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: except KeyError as e: print(f"Error generating calldata: {str(e)}") raise - print(f"Calldata: {calldata}") #TODO: Figure out how to estimate gas try: transaction = { @@ -327,7 +326,6 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: "nonce": nonce, "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), "gasPrice": 40000000000, - "value": value, } except KeyError as e: print(f"Error creating transaction dictionary: {str(e)}") @@ -339,7 +337,14 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: print(f"Error signing transaction: {str(e)}") raise print (f"Signed transaction: {signed_tx}") - tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction) + try: + tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction) + except ValueError as e: + print(f"Error sending transaction: {str(e)}") + return None + except Exception as e: + print(f"Error sending transaction: {str(e)}") + return None try: receipt = await asyncio.wait_for(asyncio.to_thread(web3.eth.wait_for_transaction_receipt, tx_hash), timeout=300) return receipt From 5c5c9f3b3daefedd3c3c03a69312f3c2bd61ca04 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Fri, 8 Mar 2024 14:40:22 +0000 Subject: [PATCH 11/27] cleanup --- examples/on-chain_mnist/abi/MNISTNFT_abi.json | 5 + examples/on-chain_mnist/action_agent.py | 26 ++- .../contracts/cache/solidity-files-cache.json | 2 +- .../on-chain_mnist/contracts/foundry.toml | 1 + .../contracts/out/Context.sol/Context.json | 2 +- .../contracts/out/ERC165.sol/ERC165.json | 2 +- .../contracts/out/ERC721.sol/ERC721.json | 2 +- .../contracts/out/IERC165.sol/IERC165.json | 2 +- .../contracts/out/IERC721.sol/IERC721.json | 2 +- .../IERC721Metadata.sol/IERC721Metadata.json | 2 +- .../IERC721Receiver.sol/IERC721Receiver.json | 2 +- .../contracts/out/MNISTNFT.sol/MNISTNFT.json | 2 +- .../out/MNISTNFT_Flattened.sol/Context.json | 1 + .../out/MNISTNFT_Flattened.sol/ERC165.json | 1 + .../out/MNISTNFT_Flattened.sol/ERC721.json | 1 + .../IERC1155Errors.json | 1 + .../out/MNISTNFT_Flattened.sol/IERC165.json | 1 + .../MNISTNFT_Flattened.sol/IERC20Errors.json | 1 + .../out/MNISTNFT_Flattened.sol/IERC721.json | 1 + .../MNISTNFT_Flattened.sol/IERC721Errors.json | 1 + .../IERC721Metadata.json | 1 + .../IERC721Receiver.json | 1 + .../out/MNISTNFT_Flattened.sol/MNISTNFT.json | 1 + .../out/MNISTNFT_Flattened.sol/Math.json | 1 + .../MNISTNFT_Flattened.sol/SignedMath.json | 1 + .../out/MNISTNFT_Flattened.sol/Strings.json | 1 + .../contracts/out/Math.sol/Math.json | 2 +- .../out/SignedMath.sol/SignedMath.json | 2 +- .../contracts/out/Strings.sol/Strings.json | 2 +- .../draft-IERC6093.sol/IERC1155Errors.json | 2 +- .../out/draft-IERC6093.sol/IERC20Errors.json | 2 +- .../out/draft-IERC6093.sol/IERC721Errors.json | 2 +- .../contracts/src/MNISTNFT_Flattened.sol | 4 +- giza_actions/agent.py | 170 +++++------------- 34 files changed, 97 insertions(+), 153 deletions(-) create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json create mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json diff --git a/examples/on-chain_mnist/abi/MNISTNFT_abi.json b/examples/on-chain_mnist/abi/MNISTNFT_abi.json index 464cb0e..cef4726 100644 --- a/examples/on-chain_mnist/abi/MNISTNFT_abi.json +++ b/examples/on-chain_mnist/abi/MNISTNFT_abi.json @@ -285,6 +285,11 @@ "internalType": "uint256", "name": "tokenId", "type": "uint256" + }, + { + "internalType": "address", + "name": "sendTo", + "type": "address" } ], "name": "mint", diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 40423be..e266999 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -1,18 +1,13 @@ from eth_account import Account -from eth_account.messages import SignableMessage -import asyncio +from eth_typing import Address import requests import os -import json import numpy as np from web3 import Web3 from PIL import Image from giza_actions.action import Action, action -from giza_actions.agent import GizaAgent, ProofType, ProofMessage -from giza_actions.model import GizaModel +from giza_actions.agent import GizaAgent from giza_actions.task import task -# Add these later when ape learns how to behave -# from eip712.messages import EIP712Message, EIP712Type from dotenv import load_dotenv load_dotenv() @@ -76,13 +71,14 @@ async def transmission(): agent = GizaAgent(id=id, version=version) # Rather than calling predict, we call infer to store the result agent.infer(input_feed={"image": img}) - # Fetch the contract address and modified inference result - contract_address = os.getenv("CONTRACT_ADDRESS") - # contract_address = Web3.to_checksum_address(contract_noncheck_address) + # Fetch the contract address and make sure it's a checksum address + contract_noncheck_address = os.getenv("CONTRACT_ADDRESS") + contract_address = Web3.to_checksum_address(contract_noncheck_address) print("Contract Address: ", contract_address) - + # Adjust the inference result to be a single-value whole integer inference_result = int(agent.inference[0][0] * 10) - inference_result_arr = [inference_result] + # Pass the inference result and the sender address + inference_result_arr = [inference_result, Address("0xEbeD10f21F32E7F327F8B923257c1b6EceD857b7")] print("inference result: ", inference_result_arr) value = 0 # Get the proof @@ -95,6 +91,7 @@ async def transmission(): (signed_proof, is_none, proofMessage, signable_proof_message) = agent.sign_proof(account, proof, proof_path) try: receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, function_name="mint", params=inference_result_arr, value=value, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) + print("Receipt: ", receipt) return receipt except Exception as e: print(f"Error: {e}") @@ -103,6 +100,5 @@ async def transmission(): raise Exception("Proof verification failed.") if __name__ == '__main__': - asyncio.run(transmission()) - # action_deploy = Action(entrypoint=transmission, name="transmit-to-chain") - # action_deploy.serve(name="transmit-to-chain") \ No newline at end of file + action_deploy = Action(entrypoint=transmission, name="transmit-to-chain") + action_deploy.serve(name="transmit-to-chain") \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json index b089b6c..3cb4522 100644 --- a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json +++ b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.23+commit.f704f362.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.23+commit.f704f362.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.23+commit.f704f362.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.23+commit.f704f362.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.23+commit.f704f362.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.23+commit.f704f362.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709895315352,"contentHash":"088c5eb5ca245afe32dd7541234a1a89","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.23+commit.f704f362.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}}}} \ No newline at end of file +{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709895315352,"contentHash":"088c5eb5ca245afe32dd7541234a1a89","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}},"src/MNISTNFT_Flattened.sol":{"lastModificationDate":1709900949508,"contentHash":"0d6f7a84481fdae72d47055d4d2a63b0","sourceName":"src/MNISTNFT_Flattened.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Context.json"},"ERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/ERC165.json"},"ERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/ERC721.json"},"IERC1155Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC1155Errors.json"},"IERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC165.json"},"IERC20Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC20Errors.json"},"IERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721.json"},"IERC721Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Errors.json"},"IERC721Metadata":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Metadata.json"},"IERC721Receiver":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Receiver.json"},"MNISTNFT":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/MNISTNFT.json"},"Math":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Math.json"},"SignedMath":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/SignedMath.json"},"Strings":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Strings.json"}}}}} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/foundry.toml b/examples/on-chain_mnist/contracts/foundry.toml index 25b918f..5a62d04 100644 --- a/examples/on-chain_mnist/contracts/foundry.toml +++ b/examples/on-chain_mnist/contracts/foundry.toml @@ -2,5 +2,6 @@ src = "src" out = "out" libs = ["lib"] +solc = "0.8.24" # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/examples/on-chain_mnist/contracts/out/Context.sol/Context.json b/examples/on-chain_mnist/contracts/out/Context.sol/Context.json index 22bd101..e9a6c07 100644 --- a/examples/on-chain_mnist/contracts/out/Context.sol/Context.json +++ b/examples/on-chain_mnist/contracts/out/Context.sol/Context.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","id":1339,"exportedSymbols":{"Context":[1338]},"nodeType":"SourceUnit","src":"101:862:5","nodes":[{"id":1310,"nodeType":"PragmaDirective","src":"101:24:5","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1338,"nodeType":"ContractDefinition","src":"624:338:5","nodes":[{"id":1320,"nodeType":"FunctionDefinition","src":"656:96:5","nodes":[],"body":{"id":1319,"nodeType":"Block","src":"718:34:5","nodes":[],"statements":[{"expression":{"expression":{"id":1316,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:5","memberName":"sender","nodeType":"MemberAccess","src":"735:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1315,"id":1318,"nodeType":"Return","src":"728:17:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:5","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[],"src":"675:2:5"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1320,"src":"709:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1313,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1329,"nodeType":"FunctionDefinition","src":"758:99:5","nodes":[],"body":{"id":1328,"nodeType":"Block","src":"825:32:5","nodes":[],"statements":[{"expression":{"expression":{"id":1325,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:5","memberName":"data","nodeType":"MemberAccess","src":"842:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1324,"id":1327,"nodeType":"Return","src":"835:15:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:5","parameters":{"id":1321,"nodeType":"ParameterList","parameters":[],"src":"775:2:5"},"returnParameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1329,"src":"809:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1322,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1337,"nodeType":"FunctionDefinition","src":"863:97:5","nodes":[],"body":{"id":1336,"nodeType":"Block","src":"935:25:5","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1333,"id":1335,"nodeType":"Return","src":"945:8:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:5","parameters":{"id":1330,"nodeType":"ParameterList","parameters":[],"src":"892:2:5"},"returnParameters":{"id":1333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1337,"src":"926:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1311,"nodeType":"StructuredDocumentation","src":"127:496:5","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1338],"name":"Context","nameLocation":"642:7:5","scope":1339,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":5} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","id":1339,"exportedSymbols":{"Context":[1338]},"nodeType":"SourceUnit","src":"101:862:5","nodes":[{"id":1310,"nodeType":"PragmaDirective","src":"101:24:5","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1338,"nodeType":"ContractDefinition","src":"624:338:5","nodes":[{"id":1320,"nodeType":"FunctionDefinition","src":"656:96:5","nodes":[],"body":{"id":1319,"nodeType":"Block","src":"718:34:5","nodes":[],"statements":[{"expression":{"expression":{"id":1316,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:5","memberName":"sender","nodeType":"MemberAccess","src":"735:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1315,"id":1318,"nodeType":"Return","src":"728:17:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:5","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[],"src":"675:2:5"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1320,"src":"709:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1313,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1329,"nodeType":"FunctionDefinition","src":"758:99:5","nodes":[],"body":{"id":1328,"nodeType":"Block","src":"825:32:5","nodes":[],"statements":[{"expression":{"expression":{"id":1325,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:5","memberName":"data","nodeType":"MemberAccess","src":"842:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1324,"id":1327,"nodeType":"Return","src":"835:15:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:5","parameters":{"id":1321,"nodeType":"ParameterList","parameters":[],"src":"775:2:5"},"returnParameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1329,"src":"809:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1322,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1337,"nodeType":"FunctionDefinition","src":"863:97:5","nodes":[],"body":{"id":1336,"nodeType":"Block","src":"935:25:5","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1333,"id":1335,"nodeType":"Return","src":"945:8:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:5","parameters":{"id":1330,"nodeType":"ParameterList","parameters":[],"src":"892:2:5"},"returnParameters":{"id":1333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1337,"src":"926:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1311,"nodeType":"StructuredDocumentation","src":"127:496:5","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1338],"name":"Context","nameLocation":"642:7:5","scope":1339,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":5} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json b/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json index baa5d9e..7532938 100644 --- a/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json +++ b/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":"ERC165"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","id":1618,"exportedSymbols":{"ERC165":[1617],"IERC165":[1629]},"nodeType":"SourceUnit","src":"114:797:7","nodes":[{"id":1595,"nodeType":"PragmaDirective","src":"114:24:7","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1597,"nodeType":"ImportDirective","src":"140:38:7","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":1618,"sourceUnit":1630,"symbolAliases":[{"foreign":{"id":1596,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"148:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1617,"nodeType":"ContractDefinition","src":"659:251:7","nodes":[{"id":1616,"nodeType":"FunctionDefinition","src":"762:146:7","nodes":[],"body":{"id":1615,"nodeType":"Block","src":"844:64:7","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1608,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"861:11:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1610,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"881:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1629_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1629_$","typeString":"type(contract IERC165)"}],"id":1609,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"876:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"876:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1629","typeString":"type(contract IERC165)"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"890:11:7","memberName":"interfaceId","nodeType":"MemberAccess","src":"876:25:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"861:40:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1607,"id":1614,"nodeType":"Return","src":"854:47:7"}]},"baseFunctions":[1628],"documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"701:56:7","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"771:17:7","parameters":{"id":1604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1603,"mutability":"mutable","name":"interfaceId","nameLocation":"796:11:7","nodeType":"VariableDeclaration","scope":1616,"src":"789:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1602,"name":"bytes4","nodeType":"ElementaryTypeName","src":"789:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"788:20:7"},"returnParameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1616,"src":"838:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1605,"name":"bool","nodeType":"ElementaryTypeName","src":"838:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"837:6:7"},"scope":1617,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1599,"name":"IERC165","nameLocations":["687:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"687:7:7"},"id":1600,"nodeType":"InheritanceSpecifier","src":"687:7:7"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"180:478:7","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1617,1629],"name":"ERC165","nameLocation":"677:6:7","scope":1618,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":7} \ No newline at end of file +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","id":1618,"exportedSymbols":{"ERC165":[1617],"IERC165":[1629]},"nodeType":"SourceUnit","src":"114:797:7","nodes":[{"id":1595,"nodeType":"PragmaDirective","src":"114:24:7","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1597,"nodeType":"ImportDirective","src":"140:38:7","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":1618,"sourceUnit":1630,"symbolAliases":[{"foreign":{"id":1596,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"148:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1617,"nodeType":"ContractDefinition","src":"659:251:7","nodes":[{"id":1616,"nodeType":"FunctionDefinition","src":"762:146:7","nodes":[],"body":{"id":1615,"nodeType":"Block","src":"844:64:7","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1608,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"861:11:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1610,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"881:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1629_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1629_$","typeString":"type(contract IERC165)"}],"id":1609,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"876:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"876:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1629","typeString":"type(contract IERC165)"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"890:11:7","memberName":"interfaceId","nodeType":"MemberAccess","src":"876:25:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"861:40:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1607,"id":1614,"nodeType":"Return","src":"854:47:7"}]},"baseFunctions":[1628],"documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"701:56:7","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"771:17:7","parameters":{"id":1604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1603,"mutability":"mutable","name":"interfaceId","nameLocation":"796:11:7","nodeType":"VariableDeclaration","scope":1616,"src":"789:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1602,"name":"bytes4","nodeType":"ElementaryTypeName","src":"789:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"788:20:7"},"returnParameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1616,"src":"838:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1605,"name":"bool","nodeType":"ElementaryTypeName","src":"838:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"837:6:7"},"scope":1617,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1599,"name":"IERC165","nameLocations":["687:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"687:7:7"},"id":1600,"nodeType":"InheritanceSpecifier","src":"687:7:7"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"180:478:7","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1617,1629],"name":"ERC165","nameLocation":"677:6:7","scope":1618,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":7} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json b/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json index a2d7962..41ee3e4 100644 --- a/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json +++ b/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":"ERC721"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","id":1146,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"Strings":[1593]},"nodeType":"SourceUnit","src":"107:17596:1","nodes":[{"id":138,"nodeType":"PragmaDirective","src":"107:24:1","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":140,"nodeType":"ImportDirective","src":"133:38:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1263,"symbolAliases":[{"foreign":{"id":139,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"141:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":142,"nodeType":"ImportDirective","src":"172:54:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1281,"symbolAliases":[{"foreign":{"id":141,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"180:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":144,"nodeType":"ImportDirective","src":"227:65:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1309,"symbolAliases":[{"foreign":{"id":143,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"235:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":146,"nodeType":"ImportDirective","src":"293:48:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","file":"../../utils/Context.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1339,"symbolAliases":[{"foreign":{"id":145,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"301:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":148,"nodeType":"ImportDirective","src":"342:48:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1594,"symbolAliases":[{"foreign":{"id":147,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1593,"src":"350:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":151,"nodeType":"ImportDirective","src":"391:69:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1618,"symbolAliases":[{"foreign":{"id":149,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"399:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":150,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"408:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":153,"nodeType":"ImportDirective","src":"461:66:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":137,"symbolAliases":[{"foreign":{"id":152,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"469:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1145,"nodeType":"ContractDefinition","src":"776:16926:1","nodes":[{"id":167,"nodeType":"UsingForDirective","src":"867:26:1","nodes":[],"global":false,"libraryName":{"id":165,"name":"Strings","nameLocations":["873:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1593,"src":"873:7:1"},"typeName":{"id":166,"name":"uint256","nodeType":"ElementaryTypeName","src":"885:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":169,"nodeType":"VariableDeclaration","src":"917:20:1","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"932:5:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":168,"name":"string","nodeType":"ElementaryTypeName","src":"917:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":171,"nodeType":"VariableDeclaration","src":"964:22:1","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"979:7:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":170,"name":"string","nodeType":"ElementaryTypeName","src":"964:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":175,"nodeType":"VariableDeclaration","src":"993:51:1","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"1037:7:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":174,"keyName":"tokenId","keyNameLocation":"1009:7:1","keyType":{"id":172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"993:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":179,"nodeType":"VariableDeclaration","src":"1051:51:1","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1093:9:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":178,"keyName":"owner","keyNameLocation":"1067:5:1","keyType":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"1059:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1051:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1076:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":183,"nodeType":"VariableDeclaration","src":"1109:59:1","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1153:15:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":182,"keyName":"tokenId","keyNameLocation":"1125:7:1","keyType":{"id":180,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1109:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":189,"nodeType":"VariableDeclaration","src":"1175:86:1","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1243:18:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":188,"keyName":"owner","keyNameLocation":"1191:5:1","keyType":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1175:59:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":187,"keyName":"operator","keyNameLocation":"1216:8:1","keyType":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1208:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1200:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":186,"name":"bool","nodeType":"ElementaryTypeName","src":"1228:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":206,"nodeType":"FunctionDefinition","src":"1381:113:1","nodes":[],"body":{"id":205,"nodeType":"Block","src":"1437:57:1","nodes":[],"statements":[{"expression":{"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":197,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1447:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":198,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"1455:5:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1447:13:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":200,"nodeType":"ExpressionStatement","src":"1447:13:1"},{"expression":{"id":203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":201,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1470:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":202,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"1480:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1470:17:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":204,"nodeType":"ExpressionStatement","src":"1470:17:1"}]},"documentation":{"id":190,"nodeType":"StructuredDocumentation","src":"1268:108:1","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"name_","nameLocation":"1407:5:1","nodeType":"VariableDeclaration","scope":206,"src":"1393:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":191,"name":"string","nodeType":"ElementaryTypeName","src":"1393:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"symbol_","nameLocation":"1428:7:1","nodeType":"VariableDeclaration","scope":206,"src":"1414:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":193,"name":"string","nodeType":"ElementaryTypeName","src":"1414:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1392:44:1"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[],"src":"1437:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":237,"nodeType":"FunctionDefinition","src":"1561:300:1","nodes":[],"body":{"id":236,"nodeType":"Block","src":"1669:192:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1698:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":219,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"1718:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1262_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1262_$","typeString":"type(contract IERC721)"}],"id":218,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1713:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1713:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1262","typeString":"type(contract IERC721)"}},"id":221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1727:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"1713:25:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1698:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":223,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1754:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":225,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"1774:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1308_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1308_$","typeString":"type(contract IERC721Metadata)"}],"id":224,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1769:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1769:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1308","typeString":"type(contract IERC721Metadata)"}},"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1791:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"1769:33:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1754:48:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1698:104:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":232,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1842:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":230,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1818:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$1145_$","typeString":"type(contract super ERC721)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1824:17:1","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1616,"src":"1818:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1818:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1698:156:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":216,"id":235,"nodeType":"Return","src":"1679:175:1"}]},"baseFunctions":[1616,1628],"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"1500:56:1","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1570:17:1","overrides":{"id":213,"nodeType":"OverrideSpecifier","overrides":[{"id":211,"name":"ERC165","nameLocations":["1637:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1617,"src":"1637:6:1"},{"id":212,"name":"IERC165","nameLocations":["1645:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"1645:7:1"}],"src":"1628:25:1"},"parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"interfaceId","nameLocation":"1595:11:1","nodeType":"VariableDeclaration","scope":237,"src":"1588:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":208,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1588:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1587:20:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":237,"src":"1663:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":214,"name":"bool","nodeType":"ElementaryTypeName","src":"1663:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1662:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":265,"nodeType":"FunctionDefinition","src":"1920:208:1","nodes":[],"body":{"id":264,"nodeType":"Block","src":"1992:136:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":245,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2006:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2023:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2015:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":246,"name":"address","nodeType":"ElementaryTypeName","src":"2015:7:1","typeDescriptions":{}}},"id":249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2015:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2006:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":259,"nodeType":"IfStatement","src":"2002:87:1","trueBody":{"id":258,"nodeType":"Block","src":"2027:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2075:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2067:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":252,"name":"address","nodeType":"ElementaryTypeName","src":"2067:7:1","typeDescriptions":{}}},"id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2067:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":251,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2048:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2048:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"RevertStatement","src":"2041:37:1"}]}},{"expression":{"baseExpression":{"id":260,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"2105:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":262,"indexExpression":{"id":261,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2115:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2105:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":244,"id":263,"nodeType":"Return","src":"2098:23:1"}]},"baseFunctions":[1187],"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"1867:48:1","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1929:9:1","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"owner","nameLocation":"1947:5:1","nodeType":"VariableDeclaration","scope":265,"src":"1939:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1938:15:1"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":265,"src":"1983:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":242,"name":"uint256","nodeType":"ElementaryTypeName","src":"1983:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":278,"nodeType":"FunctionDefinition","src":"2185:118:1","nodes":[],"body":{"id":277,"nodeType":"Block","src":"2257:46:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":274,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2288:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":273,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"2274:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":272,"id":276,"nodeType":"Return","src":"2267:29:1"}]},"baseFunctions":[1195],"documentation":{"id":266,"nodeType":"StructuredDocumentation","src":"2134:46:1","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2194:7:1","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"tokenId","nameLocation":"2210:7:1","nodeType":"VariableDeclaration","scope":278,"src":"2202:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":267,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:17:1"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"2248:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":270,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2247:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":287,"nodeType":"FunctionDefinition","src":"2365:89:1","nodes":[],"body":{"id":286,"nodeType":"Block","src":"2425:29:1","nodes":[],"statements":[{"expression":{"id":284,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"2442:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":283,"id":285,"nodeType":"Return","src":"2435:12:1"}]},"baseFunctions":[1293],"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"2309:51:1","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2374:4:1","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"2378:2:1"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":287,"src":"2410:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":281,"name":"string","nodeType":"ElementaryTypeName","src":"2410:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2409:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":296,"nodeType":"FunctionDefinition","src":"2518:93:1","nodes":[],"body":{"id":295,"nodeType":"Block","src":"2580:31:1","nodes":[],"statements":[{"expression":{"id":293,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"2597:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":292,"id":294,"nodeType":"Return","src":"2590:14:1"}]},"baseFunctions":[1299],"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"2460:53:1","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2527:6:1","parameters":{"id":289,"nodeType":"ParameterList","parameters":[],"src":"2533:2:1"},"returnParameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":296,"src":"2565:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":290,"name":"string","nodeType":"ElementaryTypeName","src":"2565:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2564:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":332,"nodeType":"FunctionDefinition","src":"2677:255:1","nodes":[],"body":{"id":331,"nodeType":"Block","src":"2756:176:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":305,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"2780:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":304,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"2766:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2766:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":307,"nodeType":"ExpressionStatement","src":"2766:22:1"},{"assignments":[309],"declarations":[{"constant":false,"id":309,"mutability":"mutable","name":"baseURI","nameLocation":"2813:7:1","nodeType":"VariableDeclaration","scope":331,"src":"2799:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":308,"name":"string","nodeType":"ElementaryTypeName","src":"2799:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"2823:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2823:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2799:34:1"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":315,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2856:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2850:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":313,"name":"bytes","nodeType":"ElementaryTypeName","src":"2850:5:1","typeDescriptions":{}}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2850:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2865:6:1","memberName":"length","nodeType":"MemberAccess","src":"2850:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2874:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2850:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2923:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2850:75:1","trueExpression":{"arguments":[{"id":323,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2892:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"2901:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2909:8:1","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1406,"src":"2901:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2878:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":320,"name":"string","nodeType":"ElementaryTypeName","src":"2878:6:1","typeDescriptions":{}}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2885:6:1","memberName":"concat","nodeType":"MemberAccess","src":"2878:13:1","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2878:42:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":303,"id":330,"nodeType":"Return","src":"2843:82:1"}]},"baseFunctions":[1307],"documentation":{"id":297,"nodeType":"StructuredDocumentation","src":"2617:55:1","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2686:8:1","parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"mutability":"mutable","name":"tokenId","nameLocation":"2703:7:1","nodeType":"VariableDeclaration","scope":332,"src":"2695:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":298,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:17:1"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":332,"src":"2741:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":301,"name":"string","nodeType":"ElementaryTypeName","src":"2741:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2740:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":341,"nodeType":"FunctionDefinition","src":"3174:92:1","nodes":[],"body":{"id":340,"nodeType":"Block","src":"3240:26:1","nodes":[],"statements":[{"expression":{"hexValue":"","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3257:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":337,"id":339,"nodeType":"Return","src":"3250:9:1"}]},"documentation":{"id":333,"nodeType":"StructuredDocumentation","src":"2938:231:1","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3183:8:1","parameters":{"id":334,"nodeType":"ParameterList","parameters":[],"src":"3191:2:1"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":341,"src":"3225:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":335,"name":"string","nodeType":"ElementaryTypeName","src":"3225:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3224:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":357,"nodeType":"FunctionDefinition","src":"3323:113:1","nodes":[],"body":{"id":356,"nodeType":"Block","src":"3384:52:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":350,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"3403:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":351,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"3407:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":352,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"3416:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3416:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":349,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":948,"src":"3394:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3394:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":355,"nodeType":"ExpressionStatement","src":"3394:35:1"}]},"baseFunctions":[1235],"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"3272:46:1","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3332:7:1","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"to","nameLocation":"3348:2:1","nodeType":"VariableDeclaration","scope":357,"src":"3340:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":343,"name":"address","nodeType":"ElementaryTypeName","src":"3340:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":346,"mutability":"mutable","name":"tokenId","nameLocation":"3360:7:1","nodeType":"VariableDeclaration","scope":357,"src":"3352:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":345,"name":"uint256","nodeType":"ElementaryTypeName","src":"3352:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3339:29:1"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[],"src":"3384:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":374,"nodeType":"FunctionDefinition","src":"3497:154:1","nodes":[],"body":{"id":373,"nodeType":"Block","src":"3573:78:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":366,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3597:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":365,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"3583:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3583:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":368,"nodeType":"ExpressionStatement","src":"3583:22:1"},{"expression":{"arguments":[{"id":370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3636:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":369,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3623:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3623:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":364,"id":372,"nodeType":"Return","src":"3616:28:1"}]},"baseFunctions":[1251],"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"3442:50:1","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3506:11:1","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:1","nodeType":"VariableDeclaration","scope":374,"src":"3518:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3517:17:1"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":374,"src":"3564:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":362,"name":"address","nodeType":"ElementaryTypeName","src":"3564:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3563:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":390,"nodeType":"FunctionDefinition","src":"3718:144:1","nodes":[],"body":{"id":389,"nodeType":"Block","src":"3793:69:1","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":383,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"3822:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":385,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":377,"src":"3836:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":386,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"3846:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":382,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"3803:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3803:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"ExpressionStatement","src":"3803:52:1"}]},"baseFunctions":[1243],"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"3657:56:1","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3727:17:1","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"operator","nameLocation":"3753:8:1","nodeType":"VariableDeclaration","scope":390,"src":"3745:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"3745:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"approved","nameLocation":"3768:8:1","nodeType":"VariableDeclaration","scope":390,"src":"3763:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":378,"name":"bool","nodeType":"ElementaryTypeName","src":"3763:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3744:33:1"},"returnParameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"3793:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":407,"nodeType":"FunctionDefinition","src":"3928:153:1","nodes":[],"body":{"id":406,"nodeType":"Block","src":"4022:59:1","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":400,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"4039:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":402,"indexExpression":{"id":401,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"4058:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4039:25:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":404,"indexExpression":{"id":403,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"4065:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4039:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":399,"id":405,"nodeType":"Return","src":"4032:42:1"}]},"baseFunctions":[1261],"documentation":{"id":391,"nodeType":"StructuredDocumentation","src":"3868:55:1","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3937:16:1","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":393,"mutability":"mutable","name":"owner","nameLocation":"3962:5:1","nodeType":"VariableDeclaration","scope":407,"src":"3954:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"3954:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":395,"mutability":"mutable","name":"operator","nameLocation":"3977:8:1","nodeType":"VariableDeclaration","scope":407,"src":"3969:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"3969:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3953:33:1"},"returnParameters":{"id":399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"4016:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":397,"name":"bool","nodeType":"ElementaryTypeName","src":"4016:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4015:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":453,"nodeType":"FunctionDefinition","src":"4143:578:1","nodes":[],"body":{"id":452,"nodeType":"Block","src":"4223:498:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":417,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"4237:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4251:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4243:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":418,"name":"address","nodeType":"ElementaryTypeName","src":"4243:7:1","typeDescriptions":{}}},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4237:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":431,"nodeType":"IfStatement","src":"4233:87:1","trueBody":{"id":430,"nodeType":"Block","src":"4255:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4306:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4298:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"4298:7:1","typeDescriptions":{}}},"id":427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4298:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":423,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"4276:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":429,"nodeType":"RevertStatement","src":"4269:40:1"}]}},{"assignments":[433],"declarations":[{"constant":false,"id":433,"mutability":"mutable","name":"previousOwner","nameLocation":"4546:13:1","nodeType":"VariableDeclaration","scope":452,"src":"4538:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":432,"name":"address","nodeType":"ElementaryTypeName","src":"4538:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":440,"initialValue":{"arguments":[{"id":435,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"4570:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":436,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"4574:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":437,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"4583:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":434,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"4562:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4538:58:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":441,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4610:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":442,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"4627:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4610:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":451,"nodeType":"IfStatement","src":"4606:109:1","trueBody":{"id":450,"nodeType":"Block","src":"4633:82:1","statements":[{"errorCall":{"arguments":[{"id":445,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"4675:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":446,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"4681:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":447,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4690:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":444,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"4654:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4654:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":449,"nodeType":"RevertStatement","src":"4647:57:1"}]}}]},"baseFunctions":[1227],"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"4087:51:1","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4152:12:1","parameters":{"id":415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":410,"mutability":"mutable","name":"from","nameLocation":"4173:4:1","nodeType":"VariableDeclaration","scope":453,"src":"4165:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":409,"name":"address","nodeType":"ElementaryTypeName","src":"4165:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":412,"mutability":"mutable","name":"to","nameLocation":"4187:2:1","nodeType":"VariableDeclaration","scope":453,"src":"4179:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":411,"name":"address","nodeType":"ElementaryTypeName","src":"4179:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":414,"mutability":"mutable","name":"tokenId","nameLocation":"4199:7:1","nodeType":"VariableDeclaration","scope":453,"src":"4191:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4191:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4164:43:1"},"returnParameters":{"id":416,"nodeType":"ParameterList","parameters":[],"src":"4223:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":471,"nodeType":"FunctionDefinition","src":"4787:132:1","nodes":[],"body":{"id":470,"nodeType":"Block","src":"4863:56:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":464,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"4890:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":465,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"4896:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"4900:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4909:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":463,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[471,497],"referencedDeclaration":497,"src":"4873:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":469,"nodeType":"ExpressionStatement","src":"4873:39:1"}]},"baseFunctions":[1217],"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"4727:55:1","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4796:16:1","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"from","nameLocation":"4821:4:1","nodeType":"VariableDeclaration","scope":471,"src":"4813:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"to","nameLocation":"4835:2:1","nodeType":"VariableDeclaration","scope":471,"src":"4827:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"tokenId","nameLocation":"4847:7:1","nodeType":"VariableDeclaration","scope":471,"src":"4839:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4839:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4812:43:1"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[],"src":"4863:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":497,"nodeType":"FunctionDefinition","src":"4985:208:1","nodes":[],"body":{"id":496,"nodeType":"Block","src":"5088:105:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":484,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"5111:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":485,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"5117:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"5121:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":483,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"5098:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5098:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5098:31:1"},{"expression":{"arguments":[{"id":490,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"5162:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":491,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"5168:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":492,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"5172:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":493,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"5181:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":489,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"5139:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"5139:47:1"}]},"baseFunctions":[1207],"documentation":{"id":472,"nodeType":"StructuredDocumentation","src":"4925:55:1","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4994:16:1","parameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":474,"mutability":"mutable","name":"from","nameLocation":"5019:4:1","nodeType":"VariableDeclaration","scope":497,"src":"5011:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":473,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":476,"mutability":"mutable","name":"to","nameLocation":"5033:2:1","nodeType":"VariableDeclaration","scope":497,"src":"5025:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":475,"name":"address","nodeType":"ElementaryTypeName","src":"5025:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"tokenId","nameLocation":"5045:7:1","nodeType":"VariableDeclaration","scope":497,"src":"5037:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":477,"name":"uint256","nodeType":"ElementaryTypeName","src":"5037:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"data","nameLocation":"5067:4:1","nodeType":"VariableDeclaration","scope":497,"src":"5054:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":479,"name":"bytes","nodeType":"ElementaryTypeName","src":"5054:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5010:62:1"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5088:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":510,"nodeType":"FunctionDefinition","src":"5707:115:1","nodes":[],"body":{"id":509,"nodeType":"Block","src":"5782:40:1","nodes":[],"statements":[{"expression":{"baseExpression":{"id":505,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"5799:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":507,"indexExpression":{"id":506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":500,"src":"5807:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5799:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":504,"id":508,"nodeType":"Return","src":"5792:23:1"}]},"documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"5199:503:1","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"5716:8:1","parameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"tokenId","nameLocation":"5733:7:1","nodeType":"VariableDeclaration","scope":510,"src":"5725:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5724:17:1"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":510,"src":"5773:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"5773:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5772:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":523,"nodeType":"FunctionDefinition","src":"5938:127:1","nodes":[],"body":{"id":522,"nodeType":"Block","src":"6017:48:1","nodes":[],"statements":[{"expression":{"baseExpression":{"id":518,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"6034:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":520,"indexExpression":{"id":519,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":513,"src":"6050:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6034:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":517,"id":521,"nodeType":"Return","src":"6027:31:1"}]},"documentation":{"id":511,"nodeType":"StructuredDocumentation","src":"5828:105:1","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"5947:12:1","parameters":{"id":514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"mutability":"mutable","name":"tokenId","nameLocation":"5968:7:1","nodeType":"VariableDeclaration","scope":523,"src":"5960:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":512,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5959:17:1"},"returnParameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":523,"src":"6008:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":515,"name":"address","nodeType":"ElementaryTypeName","src":"6008:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6007:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":559,"nodeType":"FunctionDefinition","src":"6376:272:1","nodes":[],"body":{"id":558,"nodeType":"Block","src":"6485:163:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":535,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6514:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6533:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6525:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"6525:7:1","typeDescriptions":{}}},"id":539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6525:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6514:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":541,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"6552:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":542,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6561:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6552:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":545,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"6589:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":546,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6596:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":544,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6572:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6572:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6552:52:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"6621:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":549,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"6608:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":552,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6633:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6608:32:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6552:88:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":555,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6551:90:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6514:127:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":534,"id":557,"nodeType":"Return","src":"6495:146:1"}]},"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"6071:300:1","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"6385:13:1","parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"owner","nameLocation":"6407:5:1","nodeType":"VariableDeclaration","scope":559,"src":"6399:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"6399:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"spender","nameLocation":"6422:7:1","nodeType":"VariableDeclaration","scope":559,"src":"6414:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"6414:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"tokenId","nameLocation":"6439:7:1","nodeType":"VariableDeclaration","scope":559,"src":"6431:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6398:49:1"},"returnParameters":{"id":534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":559,"src":"6479:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":532,"name":"bool","nodeType":"ElementaryTypeName","src":"6479:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6478:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":596,"nodeType":"FunctionDefinition","src":"7082:368:1","nodes":[],"body":{"id":595,"nodeType":"Block","src":"7179:271:1","nodes":[],"statements":[{"condition":{"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7193:39:1","subExpression":{"arguments":[{"id":570,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7208:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":571,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7215:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":572,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7224:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":569,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"7194:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7194:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":594,"nodeType":"IfStatement","src":"7189:255:1","trueBody":{"id":593,"nodeType":"Block","src":"7234:210:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":575,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7252:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7269:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:1","typeDescriptions":{}}},"id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7261:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7252:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":591,"nodeType":"Block","src":"7350:84:1","statements":[{"errorCall":{"arguments":[{"id":587,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7402:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":588,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7411:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":586,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"7375:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7375:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"7368:51:1"}]},"id":592,"nodeType":"IfStatement","src":"7248:186:1","trueBody":{"id":585,"nodeType":"Block","src":"7273:71:1","statements":[{"errorCall":{"arguments":[{"id":582,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7321:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":581,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"7298:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7298:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":584,"nodeType":"RevertStatement","src":"7291:38:1"}]}}]}}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"6654:423:1","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"7091:16:1","parameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"owner","nameLocation":"7116:5:1","nodeType":"VariableDeclaration","scope":596,"src":"7108:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":564,"mutability":"mutable","name":"spender","nameLocation":"7131:7:1","nodeType":"VariableDeclaration","scope":596,"src":"7123:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"7123:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":566,"mutability":"mutable","name":"tokenId","nameLocation":"7148:7:1","nodeType":"VariableDeclaration","scope":596,"src":"7140:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7107:49:1"},"returnParameters":{"id":568,"nodeType":"ParameterList","parameters":[],"src":"7179:0:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":612,"nodeType":"FunctionDefinition","src":"8092:153:1","nodes":[],"body":{"id":611,"nodeType":"Block","src":"8167:78:1","nodes":[],"statements":[{"id":610,"nodeType":"UncheckedBlock","src":"8177:62:1","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":604,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"8201:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":606,"indexExpression":{"id":605,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"8211:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8201:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"8223:5:1","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8201:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"8201:27:1"}]}]},"documentation":{"id":597,"nodeType":"StructuredDocumentation","src":"7456:631:1","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"8101:16:1","parameters":{"id":602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"account","nameLocation":"8126:7:1","nodeType":"VariableDeclaration","scope":612,"src":"8118:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":598,"name":"address","nodeType":"ElementaryTypeName","src":"8118:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":601,"mutability":"mutable","name":"value","nameLocation":"8143:5:1","nodeType":"VariableDeclaration","scope":612,"src":"8135:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":600,"name":"uint128","nodeType":"ElementaryTypeName","src":"8135:7:1","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"8117:32:1"},"returnParameters":{"id":603,"nodeType":"ParameterList","parameters":[],"src":"8167:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":702,"nodeType":"FunctionDefinition","src":"8838:795:1","nodes":[],"body":{"id":701,"nodeType":"Block","src":"8933:700:1","nodes":[],"statements":[{"assignments":[625],"declarations":[{"constant":false,"id":625,"mutability":"mutable","name":"from","nameLocation":"8951:4:1","nodeType":"VariableDeclaration","scope":701,"src":"8943:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":624,"name":"address","nodeType":"ElementaryTypeName","src":"8943:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":629,"initialValue":{"arguments":[{"id":627,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"8967:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":626,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"8958:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8958:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8943:32:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":630,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"9035:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9051:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9043:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"9043:7:1","typeDescriptions":{}}},"id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9043:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9035:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":643,"nodeType":"IfStatement","src":"9031:86:1","trueBody":{"id":642,"nodeType":"Block","src":"9055:62:1","statements":[{"expression":{"arguments":[{"id":637,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9086:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":638,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"9092:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":639,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9098:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":636,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"9069:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9069:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":641,"nodeType":"ExpressionStatement","src":"9069:37:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":644,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9161:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9177:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9169:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"9169:7:1","typeDescriptions":{}}},"id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9169:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9161:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":671,"nodeType":"IfStatement","src":"9157:256:1","trueBody":{"id":670,"nodeType":"Block","src":"9181:232:1","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9294:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9286:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":651,"name":"address","nodeType":"ElementaryTypeName","src":"9286:7:1","typeDescriptions":{}}},"id":654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":655,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9298:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9315:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9307:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":656,"name":"address","nodeType":"ElementaryTypeName","src":"9307:7:1","typeDescriptions":{}}},"id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9307:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9319:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":650,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":1014,"src":"9277:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9277:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"9277:48:1"},{"id":669,"nodeType":"UncheckedBlock","src":"9340:63:1","statements":[{"expression":{"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":663,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"9368:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":665,"indexExpression":{"id":664,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9378:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9368:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9387:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9368:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":668,"nodeType":"ExpressionStatement","src":"9368:20:1"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":672,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9427:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9441:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9433:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":673,"name":"address","nodeType":"ElementaryTypeName","src":"9433:7:1","typeDescriptions":{}}},"id":676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9433:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9427:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":686,"nodeType":"IfStatement","src":"9423:107:1","trueBody":{"id":685,"nodeType":"Block","src":"9445:85:1","statements":[{"id":684,"nodeType":"UncheckedBlock","src":"9459:61:1","statements":[{"expression":{"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":678,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"9487:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":680,"indexExpression":{"id":679,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9497:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9487:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9504:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9487:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":683,"nodeType":"ExpressionStatement","src":"9487:18:1"}]}]}},{"expression":{"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":687,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"9540:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":689,"indexExpression":{"id":688,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9548:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9540:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":690,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9559:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9540:21:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":692,"nodeType":"ExpressionStatement","src":"9540:21:1"},{"eventCall":{"arguments":[{"id":694,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9586:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":695,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9592:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":696,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9596:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":693,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"9577:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9577:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":698,"nodeType":"EmitStatement","src":"9572:32:1"},{"expression":{"id":699,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9622:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":623,"id":700,"nodeType":"Return","src":"9615:11:1"}]},"documentation":{"id":613,"nodeType":"StructuredDocumentation","src":"8251:582:1","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"8847:7:1","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":615,"mutability":"mutable","name":"to","nameLocation":"8863:2:1","nodeType":"VariableDeclaration","scope":702,"src":"8855:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":614,"name":"address","nodeType":"ElementaryTypeName","src":"8855:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"tokenId","nameLocation":"8875:7:1","nodeType":"VariableDeclaration","scope":702,"src":"8867:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":616,"name":"uint256","nodeType":"ElementaryTypeName","src":"8867:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":619,"mutability":"mutable","name":"auth","nameLocation":"8892:4:1","nodeType":"VariableDeclaration","scope":702,"src":"8884:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"8884:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8854:43:1"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":702,"src":"8924:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":621,"name":"address","nodeType":"ElementaryTypeName","src":"8924:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8923:9:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":752,"nodeType":"FunctionDefinition","src":"9955:327:1","nodes":[],"body":{"id":751,"nodeType":"Block","src":"10008:274:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":710,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"10022:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10028:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":711,"name":"address","nodeType":"ElementaryTypeName","src":"10028:7:1","typeDescriptions":{}}},"id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10028:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10022:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":724,"nodeType":"IfStatement","src":"10018:87:1","trueBody":{"id":723,"nodeType":"Block","src":"10040:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10091:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10083:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":717,"name":"address","nodeType":"ElementaryTypeName","src":"10083:7:1","typeDescriptions":{}}},"id":720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10083:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":716,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"10061:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10061:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":722,"nodeType":"RevertStatement","src":"10054:40:1"}]}},{"assignments":[726],"declarations":[{"constant":false,"id":726,"mutability":"mutable","name":"previousOwner","nameLocation":"10122:13:1","nodeType":"VariableDeclaration","scope":751,"src":"10114:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"10114:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":735,"initialValue":{"arguments":[{"id":728,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"10146:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":729,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"10150:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10159:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"10159:7:1","typeDescriptions":{}}},"id":733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10159:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":727,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"10138:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10138:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10114:56:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":736,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"10184:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10209:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10201:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":737,"name":"address","nodeType":"ElementaryTypeName","src":"10201:7:1","typeDescriptions":{}}},"id":740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10201:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10184:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":750,"nodeType":"IfStatement","src":"10180:96:1","trueBody":{"id":749,"nodeType":"Block","src":"10213:63:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10262:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10254:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"10254:7:1","typeDescriptions":{}}},"id":746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10254:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":742,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"10234:19:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":748,"nodeType":"RevertStatement","src":"10227:38:1"}]}}]},"documentation":{"id":703,"nodeType":"StructuredDocumentation","src":"9639:311:1","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9964:5:1","parameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"to","nameLocation":"9978:2:1","nodeType":"VariableDeclaration","scope":752,"src":"9970:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":704,"name":"address","nodeType":"ElementaryTypeName","src":"9970:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":707,"mutability":"mutable","name":"tokenId","nameLocation":"9990:7:1","nodeType":"VariableDeclaration","scope":752,"src":"9982:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":706,"name":"uint256","nodeType":"ElementaryTypeName","src":"9982:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9969:29:1"},"returnParameters":{"id":709,"nodeType":"ParameterList","parameters":[],"src":"10008:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":767,"nodeType":"FunctionDefinition","src":"10633:100:1","nodes":[],"body":{"id":766,"nodeType":"Block","src":"10690:43:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":761,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"10710:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":762,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"10714:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10723:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":760,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":793,"src":"10700:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10700:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":765,"nodeType":"ExpressionStatement","src":"10700:26:1"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"10288:340:1","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10642:9:1","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"to","nameLocation":"10660:2:1","nodeType":"VariableDeclaration","scope":767,"src":"10652:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"10652:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"tokenId","nameLocation":"10672:7:1","nodeType":"VariableDeclaration","scope":767,"src":"10664:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":756,"name":"uint256","nodeType":"ElementaryTypeName","src":"10664:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10651:29:1"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"10690:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":793,"nodeType":"FunctionDefinition","src":"10954:182:1","nodes":[],"body":{"id":792,"nodeType":"Block","src":"11038:98:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":778,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"11054:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":779,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"11058:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":777,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"11048:5:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11048:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":781,"nodeType":"ExpressionStatement","src":"11048:18:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11107:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11099:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"11099:7:1","typeDescriptions":{}}},"id":786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11099:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":787,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"11111:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":788,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"11115:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":789,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"11124:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":782,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"11076:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11076:53:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":791,"nodeType":"ExpressionStatement","src":"11076:53:1"}]},"documentation":{"id":768,"nodeType":"StructuredDocumentation","src":"10739:210:1","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10963:9:1","parameters":{"id":775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"to","nameLocation":"10981:2:1","nodeType":"VariableDeclaration","scope":793,"src":"10973:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"10973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"tokenId","nameLocation":"10993:7:1","nodeType":"VariableDeclaration","scope":793,"src":"10985:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"10985:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":774,"mutability":"mutable","name":"data","nameLocation":"11015:4:1","nodeType":"VariableDeclaration","scope":793,"src":"11002:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":773,"name":"bytes","nodeType":"ElementaryTypeName","src":"11002:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10972:48:1"},"returnParameters":{"id":776,"nodeType":"ParameterList","parameters":[],"src":"11038:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":826,"nodeType":"FunctionDefinition","src":"11462:227:1","nodes":[],"body":{"id":825,"nodeType":"Block","src":"11503:186:1","nodes":[],"statements":[{"assignments":[800],"declarations":[{"constant":false,"id":800,"mutability":"mutable","name":"previousOwner","nameLocation":"11521:13:1","nodeType":"VariableDeclaration","scope":825,"src":"11513:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":799,"name":"address","nodeType":"ElementaryTypeName","src":"11513:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11553:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11545:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":802,"name":"address","nodeType":"ElementaryTypeName","src":"11545:7:1","typeDescriptions":{}}},"id":805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11545:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":806,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"11557:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11566:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"11566:7:1","typeDescriptions":{}}},"id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11566:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":801,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"11537:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11537:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11513:64:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":813,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"11591:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11608:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"11608:7:1","typeDescriptions":{}}},"id":817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11608:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11591:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":824,"nodeType":"IfStatement","src":"11587:96:1","trueBody":{"id":823,"nodeType":"Block","src":"11620:63:1","statements":[{"errorCall":{"arguments":[{"id":820,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"11664:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":819,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"11641:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11641:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"RevertStatement","src":"11634:38:1"}]}}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"11142:315:1","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11471:5:1","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"tokenId","nameLocation":"11485:7:1","nodeType":"VariableDeclaration","scope":826,"src":"11477:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"11477:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11476:17:1"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[],"src":"11503:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":886,"nodeType":"FunctionDefinition","src":"12013:460:1","nodes":[],"body":{"id":885,"nodeType":"Block","src":"12084:389:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"12098:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12104:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":837,"name":"address","nodeType":"ElementaryTypeName","src":"12104:7:1","typeDescriptions":{}}},"id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12104:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12098:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":850,"nodeType":"IfStatement","src":"12094:87:1","trueBody":{"id":849,"nodeType":"Block","src":"12116:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12167:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12159:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":843,"name":"address","nodeType":"ElementaryTypeName","src":"12159:7:1","typeDescriptions":{}}},"id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12159:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":842,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"12137:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12137:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":848,"nodeType":"RevertStatement","src":"12130:40:1"}]}},{"assignments":[852],"declarations":[{"constant":false,"id":852,"mutability":"mutable","name":"previousOwner","nameLocation":"12198:13:1","nodeType":"VariableDeclaration","scope":885,"src":"12190:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"12190:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":861,"initialValue":{"arguments":[{"id":854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"12222:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12226:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12243:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12235:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":856,"name":"address","nodeType":"ElementaryTypeName","src":"12235:7:1","typeDescriptions":{}}},"id":859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12235:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":853,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"12214:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12214:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12190:56:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":862,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12260:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12277:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":863,"name":"address","nodeType":"ElementaryTypeName","src":"12277:7:1","typeDescriptions":{}}},"id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12260:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":873,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12362:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":874,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"12379:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12362:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":883,"nodeType":"IfStatement","src":"12358:109:1","trueBody":{"id":882,"nodeType":"Block","src":"12385:82:1","statements":[{"errorCall":{"arguments":[{"id":877,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"12427:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":878,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12433:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":879,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12442:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":876,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"12406:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12406:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":881,"nodeType":"RevertStatement","src":"12399:57:1"}]}},"id":884,"nodeType":"IfStatement","src":"12256:211:1","trueBody":{"id":872,"nodeType":"Block","src":"12289:63:1","statements":[{"errorCall":{"arguments":[{"id":869,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12333:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":868,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"12310:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12310:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":871,"nodeType":"RevertStatement","src":"12303:38:1"}]}}]},"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"11695:313:1","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"12022:9:1","parameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"from","nameLocation":"12040:4:1","nodeType":"VariableDeclaration","scope":886,"src":"12032:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":828,"name":"address","nodeType":"ElementaryTypeName","src":"12032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":831,"mutability":"mutable","name":"to","nameLocation":"12054:2:1","nodeType":"VariableDeclaration","scope":886,"src":"12046:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"12046:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":833,"mutability":"mutable","name":"tokenId","nameLocation":"12066:7:1","nodeType":"VariableDeclaration","scope":886,"src":"12058:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":832,"name":"uint256","nodeType":"ElementaryTypeName","src":"12058:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12031:43:1"},"returnParameters":{"id":835,"nodeType":"ParameterList","parameters":[],"src":"12084:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":904,"nodeType":"FunctionDefinition","src":"13406:128:1","nodes":[],"body":{"id":903,"nodeType":"Block","src":"13481:53:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":897,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"13505:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":898,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"13511:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":899,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"13515:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13524:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":896,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[904,930],"referencedDeclaration":930,"src":"13491:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13491:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":902,"nodeType":"ExpressionStatement","src":"13491:36:1"}]},"documentation":{"id":887,"nodeType":"StructuredDocumentation","src":"12479:922:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13415:13:1","parameters":{"id":894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"from","nameLocation":"13437:4:1","nodeType":"VariableDeclaration","scope":904,"src":"13429:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":888,"name":"address","nodeType":"ElementaryTypeName","src":"13429:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"to","nameLocation":"13451:2:1","nodeType":"VariableDeclaration","scope":904,"src":"13443:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"13443:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"tokenId","nameLocation":"13463:7:1","nodeType":"VariableDeclaration","scope":904,"src":"13455:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":892,"name":"uint256","nodeType":"ElementaryTypeName","src":"13455:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13428:43:1"},"returnParameters":{"id":895,"nodeType":"ParameterList","parameters":[],"src":"13481:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":930,"nodeType":"FunctionDefinition","src":"13771:204:1","nodes":[],"body":{"id":929,"nodeType":"Block","src":"13873:102:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":917,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"13893:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":918,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"13899:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":919,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"13903:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":916,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":886,"src":"13883:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13883:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"ExpressionStatement","src":"13883:28:1"},{"expression":{"arguments":[{"id":923,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"13944:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":924,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"13950:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":925,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"13954:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":926,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"13963:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":922,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"13921:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":928,"nodeType":"ExpressionStatement","src":"13921:47:1"}]},"documentation":{"id":905,"nodeType":"StructuredDocumentation","src":"13540:226:1","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13780:13:1","parameters":{"id":914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":907,"mutability":"mutable","name":"from","nameLocation":"13802:4:1","nodeType":"VariableDeclaration","scope":930,"src":"13794:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":906,"name":"address","nodeType":"ElementaryTypeName","src":"13794:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"to","nameLocation":"13816:2:1","nodeType":"VariableDeclaration","scope":930,"src":"13808:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":908,"name":"address","nodeType":"ElementaryTypeName","src":"13808:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":911,"mutability":"mutable","name":"tokenId","nameLocation":"13828:7:1","nodeType":"VariableDeclaration","scope":930,"src":"13820:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"13820:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":913,"mutability":"mutable","name":"data","nameLocation":"13850:4:1","nodeType":"VariableDeclaration","scope":930,"src":"13837:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":912,"name":"bytes","nodeType":"ElementaryTypeName","src":"13837:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13793:62:1"},"returnParameters":{"id":915,"nodeType":"ParameterList","parameters":[],"src":"13873:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":948,"nodeType":"FunctionDefinition","src":"14418:120:1","nodes":[],"body":{"id":947,"nodeType":"Block","src":"14488:50:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":941,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"14507:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":942,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"14511:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":943,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"14520:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14526:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":940,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":1014,"src":"14498:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14498:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":946,"nodeType":"ExpressionStatement","src":"14498:33:1"}]},"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"13981:432:1","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14427:8:1","parameters":{"id":938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":933,"mutability":"mutable","name":"to","nameLocation":"14444:2:1","nodeType":"VariableDeclaration","scope":948,"src":"14436:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"14436:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":935,"mutability":"mutable","name":"tokenId","nameLocation":"14456:7:1","nodeType":"VariableDeclaration","scope":948,"src":"14448:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":934,"name":"uint256","nodeType":"ElementaryTypeName","src":"14448:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":937,"mutability":"mutable","name":"auth","nameLocation":"14473:4:1","nodeType":"VariableDeclaration","scope":948,"src":"14465:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"14465:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14435:43:1"},"returnParameters":{"id":939,"nodeType":"ParameterList","parameters":[],"src":"14488:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1014,"nodeType":"FunctionDefinition","src":"14720:662:1","nodes":[],"body":{"id":1013,"nodeType":"Block","src":"14814:568:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":960,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"14880:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":961,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"14893:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14909:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14901:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":962,"name":"address","nodeType":"ElementaryTypeName","src":"14901:7:1","typeDescriptions":{}}},"id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14901:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14893:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14880:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1006,"nodeType":"IfStatement","src":"14876:460:1","trueBody":{"id":1005,"nodeType":"Block","src":"14913:423:1","statements":[{"assignments":[969],"declarations":[{"constant":false,"id":969,"mutability":"mutable","name":"owner","nameLocation":"14935:5:1","nodeType":"VariableDeclaration","scope":1005,"src":"14927:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":968,"name":"address","nodeType":"ElementaryTypeName","src":"14927:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":973,"initialValue":{"arguments":[{"id":971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"14957:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":970,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"14943:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14943:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14927:38:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":974,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15093:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15109:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15101:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":975,"name":"address","nodeType":"ElementaryTypeName","src":"15101:7:1","typeDescriptions":{}}},"id":978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15101:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15093:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":980,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15115:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":981,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15124:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15115:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15093:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15132:30:1","subExpression":{"arguments":[{"id":985,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15150:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":986,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15157:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":984,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"15133:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15133:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15093:69:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":995,"nodeType":"IfStatement","src":"15089:142:1","trueBody":{"id":994,"nodeType":"Block","src":"15164:67:1","statements":[{"errorCall":{"arguments":[{"id":991,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15211:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":990,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"15189:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15189:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":993,"nodeType":"RevertStatement","src":"15182:34:1"}]}},{"condition":{"id":996,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"15249:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1004,"nodeType":"IfStatement","src":"15245:81:1","trueBody":{"id":1003,"nodeType":"Block","src":"15260:66:1","statements":[{"eventCall":{"arguments":[{"id":998,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15292:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":999,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"15299:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1000,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15303:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":997,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"15283:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15283:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1002,"nodeType":"EmitStatement","src":"15278:33:1"}]}}]}},{"expression":{"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1007,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"15346:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1009,"indexExpression":{"id":1008,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15362:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15346:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1010,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"15373:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15346:29:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1012,"nodeType":"ExpressionStatement","src":"15346:29:1"}]},"documentation":{"id":949,"nodeType":"StructuredDocumentation","src":"14544:171:1","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14729:8:1","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":951,"mutability":"mutable","name":"to","nameLocation":"14746:2:1","nodeType":"VariableDeclaration","scope":1014,"src":"14738:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"14738:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":953,"mutability":"mutable","name":"tokenId","nameLocation":"14758:7:1","nodeType":"VariableDeclaration","scope":1014,"src":"14750:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":952,"name":"uint256","nodeType":"ElementaryTypeName","src":"14750:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"auth","nameLocation":"14775:4:1","nodeType":"VariableDeclaration","scope":1014,"src":"14767:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"14767:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"emitEvent","nameLocation":"14786:9:1","nodeType":"VariableDeclaration","scope":1014,"src":"14781:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":956,"name":"bool","nodeType":"ElementaryTypeName","src":"14781:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14737:59:1"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[],"src":"14814:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1051,"nodeType":"FunctionDefinition","src":"15591:312:1","nodes":[],"body":{"id":1050,"nodeType":"Block","src":"15684:219:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1024,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15698:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15718:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15710:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1025,"name":"address","nodeType":"ElementaryTypeName","src":"15710:7:1","typeDescriptions":{}}},"id":1028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15710:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15698:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1035,"nodeType":"IfStatement","src":"15694:91:1","trueBody":{"id":1034,"nodeType":"Block","src":"15722:63:1","statements":[{"errorCall":{"arguments":[{"id":1031,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15765:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1030,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"15743:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15743:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1033,"nodeType":"RevertStatement","src":"15736:38:1"}]}},{"expression":{"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1036,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"15794:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1039,"indexExpression":{"id":1037,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"15813:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15794:25:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1040,"indexExpression":{"id":1038,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15820:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15794:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1041,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"15832:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15794:46:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1043,"nodeType":"ExpressionStatement","src":"15794:46:1"},{"eventCall":{"arguments":[{"id":1045,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"15870:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1046,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15877:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1047,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"15887:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1044,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"15855:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15855:41:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1049,"nodeType":"EmitStatement","src":"15850:46:1"}]},"documentation":{"id":1015,"nodeType":"StructuredDocumentation","src":"15388:198:1","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"15600:18:1","parameters":{"id":1022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"owner","nameLocation":"15627:5:1","nodeType":"VariableDeclaration","scope":1051,"src":"15619:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"15619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"operator","nameLocation":"15642:8:1","nodeType":"VariableDeclaration","scope":1051,"src":"15634:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1018,"name":"address","nodeType":"ElementaryTypeName","src":"15634:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1021,"mutability":"mutable","name":"approved","nameLocation":"15657:8:1","nodeType":"VariableDeclaration","scope":1051,"src":"15652:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1020,"name":"bool","nodeType":"ElementaryTypeName","src":"15652:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15618:48:1"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[],"src":"15684:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1080,"nodeType":"FunctionDefinition","src":"16138:241:1","nodes":[],"body":{"id":1079,"nodeType":"Block","src":"16210:169:1","nodes":[],"statements":[{"assignments":[1060],"declarations":[{"constant":false,"id":1060,"mutability":"mutable","name":"owner","nameLocation":"16228:5:1","nodeType":"VariableDeclaration","scope":1079,"src":"16220:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1059,"name":"address","nodeType":"ElementaryTypeName","src":"16220:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1064,"initialValue":{"arguments":[{"id":1062,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"16245:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1061,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"16236:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16236:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16220:33:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1065,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"16267:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16284:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16276:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1066,"name":"address","nodeType":"ElementaryTypeName","src":"16276:7:1","typeDescriptions":{}}},"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16276:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16267:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1076,"nodeType":"IfStatement","src":"16263:88:1","trueBody":{"id":1075,"nodeType":"Block","src":"16288:63:1","statements":[{"errorCall":{"arguments":[{"id":1072,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"16332:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1071,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"16309:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16309:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1074,"nodeType":"RevertStatement","src":"16302:38:1"}]}},{"expression":{"id":1077,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"16367:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1058,"id":1078,"nodeType":"Return","src":"16360:12:1"}]},"documentation":{"id":1052,"nodeType":"StructuredDocumentation","src":"15909:224:1","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"16147:13:1","parameters":{"id":1055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1054,"mutability":"mutable","name":"tokenId","nameLocation":"16169:7:1","nodeType":"VariableDeclaration","scope":1080,"src":"16161:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"16161:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16160:17:1"},"returnParameters":{"id":1058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1080,"src":"16201:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1056,"name":"address","nodeType":"ElementaryTypeName","src":"16201:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16200:9:1"},"scope":1145,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1144,"nodeType":"FunctionDefinition","src":"16918:782:1","nodes":[],"body":{"id":1143,"nodeType":"Block","src":"17020:680:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1092,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17034:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17037:4:1","memberName":"code","nodeType":"MemberAccess","src":"17034:7:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17042:6:1","memberName":"length","nodeType":"MemberAccess","src":"17034:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17051:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17034:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1142,"nodeType":"IfStatement","src":"17030:664:1","trueBody":{"id":1141,"nodeType":"Block","src":"17054:640:1","statements":[{"clauses":[{"block":{"id":1121,"nodeType":"Block","src":"17168:162:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1110,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1108,"src":"17190:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":1111,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"17200:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1280_$","typeString":"type(contract IERC721Receiver)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17216:16:1","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1279,"src":"17200:32:1","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17233:8:1","memberName":"selector","nodeType":"MemberAccess","src":"17200:41:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"17190:51:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1120,"nodeType":"IfStatement","src":"17186:130:1","trueBody":{"id":1119,"nodeType":"Block","src":"17243:73:1","statements":[{"errorCall":{"arguments":[{"id":1116,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17294:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1115,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"17272:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17272:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1118,"nodeType":"RevertStatement","src":"17265:32:1"}]}}]},"errorName":"","id":1122,"nodeType":"TryCatchClause","parameters":{"id":1109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1108,"mutability":"mutable","name":"retval","nameLocation":"17160:6:1","nodeType":"VariableDeclaration","scope":1122,"src":"17153:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1107,"name":"bytes4","nodeType":"ElementaryTypeName","src":"17153:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"17152:15:1"},"src":"17144:186:1"},{"block":{"id":1138,"nodeType":"Block","src":"17359:325:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1126,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1124,"src":"17381:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17388:6:1","memberName":"length","nodeType":"MemberAccess","src":"17381:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17398:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17381:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1136,"nodeType":"Block","src":"17480:190:1","statements":[{"AST":{"nativeSrc":"17566:86:1","nodeType":"YulBlock","src":"17566:86:1","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17603:2:1","nodeType":"YulLiteral","src":"17603:2:1","type":"","value":"32"},{"name":"reason","nativeSrc":"17607:6:1","nodeType":"YulIdentifier","src":"17607:6:1"}],"functionName":{"name":"add","nativeSrc":"17599:3:1","nodeType":"YulIdentifier","src":"17599:3:1"},"nativeSrc":"17599:15:1","nodeType":"YulFunctionCall","src":"17599:15:1"},{"arguments":[{"name":"reason","nativeSrc":"17622:6:1","nodeType":"YulIdentifier","src":"17622:6:1"}],"functionName":{"name":"mload","nativeSrc":"17616:5:1","nodeType":"YulIdentifier","src":"17616:5:1"},"nativeSrc":"17616:13:1","nodeType":"YulFunctionCall","src":"17616:13:1"}],"functionName":{"name":"revert","nativeSrc":"17592:6:1","nodeType":"YulIdentifier","src":"17592:6:1"},"nativeSrc":"17592:38:1","nodeType":"YulFunctionCall","src":"17592:38:1"},"nativeSrc":"17592:38:1","nodeType":"YulExpressionStatement","src":"17592:38:1"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1124,"isOffset":false,"isSlot":false,"src":"17607:6:1","valueSize":1},{"declaration":1124,"isOffset":false,"isSlot":false,"src":"17622:6:1","valueSize":1}],"id":1135,"nodeType":"InlineAssembly","src":"17557:95:1"}]},"id":1137,"nodeType":"IfStatement","src":"17377:293:1","trueBody":{"id":1134,"nodeType":"Block","src":"17401:73:1","statements":[{"errorCall":{"arguments":[{"id":1131,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17452:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1130,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"17430:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17430:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1133,"nodeType":"RevertStatement","src":"17423:32:1"}]}}]},"errorName":"","id":1139,"nodeType":"TryCatchClause","parameters":{"id":1125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1124,"mutability":"mutable","name":"reason","nameLocation":"17351:6:1","nodeType":"VariableDeclaration","scope":1139,"src":"17338:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1123,"name":"bytes","nodeType":"ElementaryTypeName","src":"17338:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17337:21:1"},"src":"17331:353:1"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1101,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"17109:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17109:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1103,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"17123:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1104,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"17129:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1105,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"17138:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":1098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17088:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1097,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"17072:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1280_$","typeString":"type(contract IERC721Receiver)"}},"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17072:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1280","typeString":"contract IERC721Receiver"}},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17092:16:1","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1279,"src":"17072:36:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17072:71:1","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1140,"nodeType":"TryStatement","src":"17068:616:1"}]}}]},"documentation":{"id":1081,"nodeType":"StructuredDocumentation","src":"16385:528:1","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"16927:22:1","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"mutability":"mutable","name":"from","nameLocation":"16958:4:1","nodeType":"VariableDeclaration","scope":1144,"src":"16950:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1082,"name":"address","nodeType":"ElementaryTypeName","src":"16950:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1085,"mutability":"mutable","name":"to","nameLocation":"16972:2:1","nodeType":"VariableDeclaration","scope":1144,"src":"16964:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1084,"name":"address","nodeType":"ElementaryTypeName","src":"16964:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1087,"mutability":"mutable","name":"tokenId","nameLocation":"16984:7:1","nodeType":"VariableDeclaration","scope":1144,"src":"16976:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1086,"name":"uint256","nodeType":"ElementaryTypeName","src":"16976:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1089,"mutability":"mutable","name":"data","nameLocation":"17006:4:1","nodeType":"VariableDeclaration","scope":1144,"src":"16993:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1088,"name":"bytes","nodeType":"ElementaryTypeName","src":"16993:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16949:62:1"},"returnParameters":{"id":1091,"nodeType":"ParameterList","parameters":[],"src":"17020:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":155,"name":"Context","nameLocations":["804:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1338,"src":"804:7:1"},"id":156,"nodeType":"InheritanceSpecifier","src":"804:7:1"},{"baseName":{"id":157,"name":"ERC165","nameLocations":["813:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1617,"src":"813:6:1"},"id":158,"nodeType":"InheritanceSpecifier","src":"813:6:1"},{"baseName":{"id":159,"name":"IERC721","nameLocations":["821:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1262,"src":"821:7:1"},"id":160,"nodeType":"InheritanceSpecifier","src":"821:7:1"},{"baseName":{"id":161,"name":"IERC721Metadata","nameLocations":["830:15:1"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"830:15:1"},"id":162,"nodeType":"InheritanceSpecifier","src":"830:15:1"},{"baseName":{"id":163,"name":"IERC721Errors","nameLocations":["847:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"847:13:1"},"id":164,"nodeType":"InheritanceSpecifier","src":"847:13:1"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"529:246:1","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[1145,89,1308,1262,1617,1629,1338],"name":"ERC721","nameLocation":"794:6:1","scope":1146,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":1} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":"ERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","id":1146,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"Strings":[1593]},"nodeType":"SourceUnit","src":"107:17596:1","nodes":[{"id":138,"nodeType":"PragmaDirective","src":"107:24:1","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":140,"nodeType":"ImportDirective","src":"133:38:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1263,"symbolAliases":[{"foreign":{"id":139,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"141:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":142,"nodeType":"ImportDirective","src":"172:54:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1281,"symbolAliases":[{"foreign":{"id":141,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"180:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":144,"nodeType":"ImportDirective","src":"227:65:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1309,"symbolAliases":[{"foreign":{"id":143,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"235:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":146,"nodeType":"ImportDirective","src":"293:48:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","file":"../../utils/Context.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1339,"symbolAliases":[{"foreign":{"id":145,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"301:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":148,"nodeType":"ImportDirective","src":"342:48:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1594,"symbolAliases":[{"foreign":{"id":147,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1593,"src":"350:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":151,"nodeType":"ImportDirective","src":"391:69:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1618,"symbolAliases":[{"foreign":{"id":149,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"399:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":150,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"408:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":153,"nodeType":"ImportDirective","src":"461:66:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":137,"symbolAliases":[{"foreign":{"id":152,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"469:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1145,"nodeType":"ContractDefinition","src":"776:16926:1","nodes":[{"id":167,"nodeType":"UsingForDirective","src":"867:26:1","nodes":[],"global":false,"libraryName":{"id":165,"name":"Strings","nameLocations":["873:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1593,"src":"873:7:1"},"typeName":{"id":166,"name":"uint256","nodeType":"ElementaryTypeName","src":"885:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":169,"nodeType":"VariableDeclaration","src":"917:20:1","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"932:5:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":168,"name":"string","nodeType":"ElementaryTypeName","src":"917:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":171,"nodeType":"VariableDeclaration","src":"964:22:1","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"979:7:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":170,"name":"string","nodeType":"ElementaryTypeName","src":"964:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":175,"nodeType":"VariableDeclaration","src":"993:51:1","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"1037:7:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":174,"keyName":"tokenId","keyNameLocation":"1009:7:1","keyType":{"id":172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"993:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":179,"nodeType":"VariableDeclaration","src":"1051:51:1","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1093:9:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":178,"keyName":"owner","keyNameLocation":"1067:5:1","keyType":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"1059:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1051:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1076:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":183,"nodeType":"VariableDeclaration","src":"1109:59:1","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1153:15:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":182,"keyName":"tokenId","keyNameLocation":"1125:7:1","keyType":{"id":180,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1109:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":189,"nodeType":"VariableDeclaration","src":"1175:86:1","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1243:18:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":188,"keyName":"owner","keyNameLocation":"1191:5:1","keyType":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1175:59:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":187,"keyName":"operator","keyNameLocation":"1216:8:1","keyType":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1208:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1200:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":186,"name":"bool","nodeType":"ElementaryTypeName","src":"1228:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":206,"nodeType":"FunctionDefinition","src":"1381:113:1","nodes":[],"body":{"id":205,"nodeType":"Block","src":"1437:57:1","nodes":[],"statements":[{"expression":{"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":197,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1447:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":198,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"1455:5:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1447:13:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":200,"nodeType":"ExpressionStatement","src":"1447:13:1"},{"expression":{"id":203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":201,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1470:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":202,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"1480:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1470:17:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":204,"nodeType":"ExpressionStatement","src":"1470:17:1"}]},"documentation":{"id":190,"nodeType":"StructuredDocumentation","src":"1268:108:1","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"name_","nameLocation":"1407:5:1","nodeType":"VariableDeclaration","scope":206,"src":"1393:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":191,"name":"string","nodeType":"ElementaryTypeName","src":"1393:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"symbol_","nameLocation":"1428:7:1","nodeType":"VariableDeclaration","scope":206,"src":"1414:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":193,"name":"string","nodeType":"ElementaryTypeName","src":"1414:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1392:44:1"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[],"src":"1437:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":237,"nodeType":"FunctionDefinition","src":"1561:300:1","nodes":[],"body":{"id":236,"nodeType":"Block","src":"1669:192:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1698:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":219,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"1718:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1262_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1262_$","typeString":"type(contract IERC721)"}],"id":218,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1713:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1713:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1262","typeString":"type(contract IERC721)"}},"id":221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1727:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"1713:25:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1698:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":223,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1754:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":225,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"1774:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1308_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1308_$","typeString":"type(contract IERC721Metadata)"}],"id":224,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1769:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1769:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1308","typeString":"type(contract IERC721Metadata)"}},"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1791:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"1769:33:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1754:48:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1698:104:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":232,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1842:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":230,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1818:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$1145_$","typeString":"type(contract super ERC721)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1824:17:1","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1616,"src":"1818:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1818:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1698:156:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":216,"id":235,"nodeType":"Return","src":"1679:175:1"}]},"baseFunctions":[1616,1628],"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"1500:56:1","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1570:17:1","overrides":{"id":213,"nodeType":"OverrideSpecifier","overrides":[{"id":211,"name":"ERC165","nameLocations":["1637:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1617,"src":"1637:6:1"},{"id":212,"name":"IERC165","nameLocations":["1645:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"1645:7:1"}],"src":"1628:25:1"},"parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"interfaceId","nameLocation":"1595:11:1","nodeType":"VariableDeclaration","scope":237,"src":"1588:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":208,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1588:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1587:20:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":237,"src":"1663:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":214,"name":"bool","nodeType":"ElementaryTypeName","src":"1663:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1662:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":265,"nodeType":"FunctionDefinition","src":"1920:208:1","nodes":[],"body":{"id":264,"nodeType":"Block","src":"1992:136:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":245,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2006:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2023:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2015:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":246,"name":"address","nodeType":"ElementaryTypeName","src":"2015:7:1","typeDescriptions":{}}},"id":249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2015:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2006:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":259,"nodeType":"IfStatement","src":"2002:87:1","trueBody":{"id":258,"nodeType":"Block","src":"2027:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2075:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2067:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":252,"name":"address","nodeType":"ElementaryTypeName","src":"2067:7:1","typeDescriptions":{}}},"id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2067:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":251,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2048:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2048:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"RevertStatement","src":"2041:37:1"}]}},{"expression":{"baseExpression":{"id":260,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"2105:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":262,"indexExpression":{"id":261,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2115:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2105:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":244,"id":263,"nodeType":"Return","src":"2098:23:1"}]},"baseFunctions":[1187],"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"1867:48:1","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1929:9:1","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"owner","nameLocation":"1947:5:1","nodeType":"VariableDeclaration","scope":265,"src":"1939:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1938:15:1"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":265,"src":"1983:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":242,"name":"uint256","nodeType":"ElementaryTypeName","src":"1983:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":278,"nodeType":"FunctionDefinition","src":"2185:118:1","nodes":[],"body":{"id":277,"nodeType":"Block","src":"2257:46:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":274,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2288:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":273,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"2274:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":272,"id":276,"nodeType":"Return","src":"2267:29:1"}]},"baseFunctions":[1195],"documentation":{"id":266,"nodeType":"StructuredDocumentation","src":"2134:46:1","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2194:7:1","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"tokenId","nameLocation":"2210:7:1","nodeType":"VariableDeclaration","scope":278,"src":"2202:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":267,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:17:1"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"2248:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":270,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2247:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":287,"nodeType":"FunctionDefinition","src":"2365:89:1","nodes":[],"body":{"id":286,"nodeType":"Block","src":"2425:29:1","nodes":[],"statements":[{"expression":{"id":284,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"2442:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":283,"id":285,"nodeType":"Return","src":"2435:12:1"}]},"baseFunctions":[1293],"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"2309:51:1","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2374:4:1","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"2378:2:1"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":287,"src":"2410:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":281,"name":"string","nodeType":"ElementaryTypeName","src":"2410:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2409:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":296,"nodeType":"FunctionDefinition","src":"2518:93:1","nodes":[],"body":{"id":295,"nodeType":"Block","src":"2580:31:1","nodes":[],"statements":[{"expression":{"id":293,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"2597:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":292,"id":294,"nodeType":"Return","src":"2590:14:1"}]},"baseFunctions":[1299],"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"2460:53:1","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2527:6:1","parameters":{"id":289,"nodeType":"ParameterList","parameters":[],"src":"2533:2:1"},"returnParameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":296,"src":"2565:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":290,"name":"string","nodeType":"ElementaryTypeName","src":"2565:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2564:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":332,"nodeType":"FunctionDefinition","src":"2677:255:1","nodes":[],"body":{"id":331,"nodeType":"Block","src":"2756:176:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":305,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"2780:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":304,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"2766:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2766:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":307,"nodeType":"ExpressionStatement","src":"2766:22:1"},{"assignments":[309],"declarations":[{"constant":false,"id":309,"mutability":"mutable","name":"baseURI","nameLocation":"2813:7:1","nodeType":"VariableDeclaration","scope":331,"src":"2799:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":308,"name":"string","nodeType":"ElementaryTypeName","src":"2799:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"2823:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2823:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2799:34:1"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":315,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2856:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2850:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":313,"name":"bytes","nodeType":"ElementaryTypeName","src":"2850:5:1","typeDescriptions":{}}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2850:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2865:6:1","memberName":"length","nodeType":"MemberAccess","src":"2850:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2874:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2850:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2923:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2850:75:1","trueExpression":{"arguments":[{"id":323,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2892:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"2901:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2909:8:1","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1406,"src":"2901:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2878:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":320,"name":"string","nodeType":"ElementaryTypeName","src":"2878:6:1","typeDescriptions":{}}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2885:6:1","memberName":"concat","nodeType":"MemberAccess","src":"2878:13:1","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2878:42:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":303,"id":330,"nodeType":"Return","src":"2843:82:1"}]},"baseFunctions":[1307],"documentation":{"id":297,"nodeType":"StructuredDocumentation","src":"2617:55:1","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2686:8:1","parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"mutability":"mutable","name":"tokenId","nameLocation":"2703:7:1","nodeType":"VariableDeclaration","scope":332,"src":"2695:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":298,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:17:1"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":332,"src":"2741:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":301,"name":"string","nodeType":"ElementaryTypeName","src":"2741:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2740:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":341,"nodeType":"FunctionDefinition","src":"3174:92:1","nodes":[],"body":{"id":340,"nodeType":"Block","src":"3240:26:1","nodes":[],"statements":[{"expression":{"hexValue":"","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3257:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":337,"id":339,"nodeType":"Return","src":"3250:9:1"}]},"documentation":{"id":333,"nodeType":"StructuredDocumentation","src":"2938:231:1","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3183:8:1","parameters":{"id":334,"nodeType":"ParameterList","parameters":[],"src":"3191:2:1"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":341,"src":"3225:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":335,"name":"string","nodeType":"ElementaryTypeName","src":"3225:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3224:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":357,"nodeType":"FunctionDefinition","src":"3323:113:1","nodes":[],"body":{"id":356,"nodeType":"Block","src":"3384:52:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":350,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"3403:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":351,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"3407:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":352,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"3416:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3416:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":349,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":948,"src":"3394:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3394:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":355,"nodeType":"ExpressionStatement","src":"3394:35:1"}]},"baseFunctions":[1235],"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"3272:46:1","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3332:7:1","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"to","nameLocation":"3348:2:1","nodeType":"VariableDeclaration","scope":357,"src":"3340:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":343,"name":"address","nodeType":"ElementaryTypeName","src":"3340:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":346,"mutability":"mutable","name":"tokenId","nameLocation":"3360:7:1","nodeType":"VariableDeclaration","scope":357,"src":"3352:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":345,"name":"uint256","nodeType":"ElementaryTypeName","src":"3352:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3339:29:1"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[],"src":"3384:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":374,"nodeType":"FunctionDefinition","src":"3497:154:1","nodes":[],"body":{"id":373,"nodeType":"Block","src":"3573:78:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":366,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3597:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":365,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"3583:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3583:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":368,"nodeType":"ExpressionStatement","src":"3583:22:1"},{"expression":{"arguments":[{"id":370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3636:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":369,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3623:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3623:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":364,"id":372,"nodeType":"Return","src":"3616:28:1"}]},"baseFunctions":[1251],"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"3442:50:1","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3506:11:1","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:1","nodeType":"VariableDeclaration","scope":374,"src":"3518:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3517:17:1"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":374,"src":"3564:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":362,"name":"address","nodeType":"ElementaryTypeName","src":"3564:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3563:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":390,"nodeType":"FunctionDefinition","src":"3718:144:1","nodes":[],"body":{"id":389,"nodeType":"Block","src":"3793:69:1","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":383,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"3822:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":385,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":377,"src":"3836:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":386,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"3846:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":382,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"3803:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3803:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"ExpressionStatement","src":"3803:52:1"}]},"baseFunctions":[1243],"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"3657:56:1","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3727:17:1","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"operator","nameLocation":"3753:8:1","nodeType":"VariableDeclaration","scope":390,"src":"3745:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"3745:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"approved","nameLocation":"3768:8:1","nodeType":"VariableDeclaration","scope":390,"src":"3763:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":378,"name":"bool","nodeType":"ElementaryTypeName","src":"3763:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3744:33:1"},"returnParameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"3793:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":407,"nodeType":"FunctionDefinition","src":"3928:153:1","nodes":[],"body":{"id":406,"nodeType":"Block","src":"4022:59:1","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":400,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"4039:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":402,"indexExpression":{"id":401,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"4058:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4039:25:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":404,"indexExpression":{"id":403,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"4065:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4039:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":399,"id":405,"nodeType":"Return","src":"4032:42:1"}]},"baseFunctions":[1261],"documentation":{"id":391,"nodeType":"StructuredDocumentation","src":"3868:55:1","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3937:16:1","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":393,"mutability":"mutable","name":"owner","nameLocation":"3962:5:1","nodeType":"VariableDeclaration","scope":407,"src":"3954:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"3954:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":395,"mutability":"mutable","name":"operator","nameLocation":"3977:8:1","nodeType":"VariableDeclaration","scope":407,"src":"3969:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"3969:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3953:33:1"},"returnParameters":{"id":399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"4016:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":397,"name":"bool","nodeType":"ElementaryTypeName","src":"4016:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4015:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":453,"nodeType":"FunctionDefinition","src":"4143:578:1","nodes":[],"body":{"id":452,"nodeType":"Block","src":"4223:498:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":417,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"4237:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4251:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4243:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":418,"name":"address","nodeType":"ElementaryTypeName","src":"4243:7:1","typeDescriptions":{}}},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4237:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":431,"nodeType":"IfStatement","src":"4233:87:1","trueBody":{"id":430,"nodeType":"Block","src":"4255:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4306:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4298:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"4298:7:1","typeDescriptions":{}}},"id":427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4298:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":423,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"4276:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":429,"nodeType":"RevertStatement","src":"4269:40:1"}]}},{"assignments":[433],"declarations":[{"constant":false,"id":433,"mutability":"mutable","name":"previousOwner","nameLocation":"4546:13:1","nodeType":"VariableDeclaration","scope":452,"src":"4538:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":432,"name":"address","nodeType":"ElementaryTypeName","src":"4538:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":440,"initialValue":{"arguments":[{"id":435,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"4570:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":436,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"4574:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":437,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"4583:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":434,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"4562:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4538:58:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":441,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4610:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":442,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"4627:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4610:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":451,"nodeType":"IfStatement","src":"4606:109:1","trueBody":{"id":450,"nodeType":"Block","src":"4633:82:1","statements":[{"errorCall":{"arguments":[{"id":445,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"4675:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":446,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"4681:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":447,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4690:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":444,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"4654:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4654:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":449,"nodeType":"RevertStatement","src":"4647:57:1"}]}}]},"baseFunctions":[1227],"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"4087:51:1","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4152:12:1","parameters":{"id":415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":410,"mutability":"mutable","name":"from","nameLocation":"4173:4:1","nodeType":"VariableDeclaration","scope":453,"src":"4165:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":409,"name":"address","nodeType":"ElementaryTypeName","src":"4165:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":412,"mutability":"mutable","name":"to","nameLocation":"4187:2:1","nodeType":"VariableDeclaration","scope":453,"src":"4179:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":411,"name":"address","nodeType":"ElementaryTypeName","src":"4179:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":414,"mutability":"mutable","name":"tokenId","nameLocation":"4199:7:1","nodeType":"VariableDeclaration","scope":453,"src":"4191:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4191:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4164:43:1"},"returnParameters":{"id":416,"nodeType":"ParameterList","parameters":[],"src":"4223:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":471,"nodeType":"FunctionDefinition","src":"4787:132:1","nodes":[],"body":{"id":470,"nodeType":"Block","src":"4863:56:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":464,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"4890:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":465,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"4896:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"4900:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4909:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":463,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[471,497],"referencedDeclaration":497,"src":"4873:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":469,"nodeType":"ExpressionStatement","src":"4873:39:1"}]},"baseFunctions":[1217],"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"4727:55:1","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4796:16:1","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"from","nameLocation":"4821:4:1","nodeType":"VariableDeclaration","scope":471,"src":"4813:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"to","nameLocation":"4835:2:1","nodeType":"VariableDeclaration","scope":471,"src":"4827:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"tokenId","nameLocation":"4847:7:1","nodeType":"VariableDeclaration","scope":471,"src":"4839:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4839:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4812:43:1"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[],"src":"4863:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":497,"nodeType":"FunctionDefinition","src":"4985:208:1","nodes":[],"body":{"id":496,"nodeType":"Block","src":"5088:105:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":484,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"5111:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":485,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"5117:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"5121:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":483,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"5098:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5098:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5098:31:1"},{"expression":{"arguments":[{"id":490,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"5162:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":491,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"5168:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":492,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"5172:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":493,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"5181:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":489,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"5139:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"5139:47:1"}]},"baseFunctions":[1207],"documentation":{"id":472,"nodeType":"StructuredDocumentation","src":"4925:55:1","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4994:16:1","parameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":474,"mutability":"mutable","name":"from","nameLocation":"5019:4:1","nodeType":"VariableDeclaration","scope":497,"src":"5011:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":473,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":476,"mutability":"mutable","name":"to","nameLocation":"5033:2:1","nodeType":"VariableDeclaration","scope":497,"src":"5025:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":475,"name":"address","nodeType":"ElementaryTypeName","src":"5025:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"tokenId","nameLocation":"5045:7:1","nodeType":"VariableDeclaration","scope":497,"src":"5037:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":477,"name":"uint256","nodeType":"ElementaryTypeName","src":"5037:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"data","nameLocation":"5067:4:1","nodeType":"VariableDeclaration","scope":497,"src":"5054:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":479,"name":"bytes","nodeType":"ElementaryTypeName","src":"5054:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5010:62:1"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5088:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":510,"nodeType":"FunctionDefinition","src":"5707:115:1","nodes":[],"body":{"id":509,"nodeType":"Block","src":"5782:40:1","nodes":[],"statements":[{"expression":{"baseExpression":{"id":505,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"5799:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":507,"indexExpression":{"id":506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":500,"src":"5807:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5799:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":504,"id":508,"nodeType":"Return","src":"5792:23:1"}]},"documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"5199:503:1","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"5716:8:1","parameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"tokenId","nameLocation":"5733:7:1","nodeType":"VariableDeclaration","scope":510,"src":"5725:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5724:17:1"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":510,"src":"5773:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"5773:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5772:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":523,"nodeType":"FunctionDefinition","src":"5938:127:1","nodes":[],"body":{"id":522,"nodeType":"Block","src":"6017:48:1","nodes":[],"statements":[{"expression":{"baseExpression":{"id":518,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"6034:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":520,"indexExpression":{"id":519,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":513,"src":"6050:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6034:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":517,"id":521,"nodeType":"Return","src":"6027:31:1"}]},"documentation":{"id":511,"nodeType":"StructuredDocumentation","src":"5828:105:1","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"5947:12:1","parameters":{"id":514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"mutability":"mutable","name":"tokenId","nameLocation":"5968:7:1","nodeType":"VariableDeclaration","scope":523,"src":"5960:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":512,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5959:17:1"},"returnParameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":523,"src":"6008:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":515,"name":"address","nodeType":"ElementaryTypeName","src":"6008:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6007:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":559,"nodeType":"FunctionDefinition","src":"6376:272:1","nodes":[],"body":{"id":558,"nodeType":"Block","src":"6485:163:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":535,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6514:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6533:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6525:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"6525:7:1","typeDescriptions":{}}},"id":539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6525:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6514:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":541,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"6552:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":542,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6561:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6552:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":545,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"6589:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":546,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6596:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":544,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6572:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6572:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6552:52:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"6621:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":549,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"6608:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":552,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6633:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6608:32:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6552:88:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":555,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6551:90:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6514:127:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":534,"id":557,"nodeType":"Return","src":"6495:146:1"}]},"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"6071:300:1","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"6385:13:1","parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"owner","nameLocation":"6407:5:1","nodeType":"VariableDeclaration","scope":559,"src":"6399:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"6399:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"spender","nameLocation":"6422:7:1","nodeType":"VariableDeclaration","scope":559,"src":"6414:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"6414:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"tokenId","nameLocation":"6439:7:1","nodeType":"VariableDeclaration","scope":559,"src":"6431:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6398:49:1"},"returnParameters":{"id":534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":559,"src":"6479:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":532,"name":"bool","nodeType":"ElementaryTypeName","src":"6479:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6478:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":596,"nodeType":"FunctionDefinition","src":"7082:368:1","nodes":[],"body":{"id":595,"nodeType":"Block","src":"7179:271:1","nodes":[],"statements":[{"condition":{"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7193:39:1","subExpression":{"arguments":[{"id":570,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7208:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":571,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7215:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":572,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7224:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":569,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"7194:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7194:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":594,"nodeType":"IfStatement","src":"7189:255:1","trueBody":{"id":593,"nodeType":"Block","src":"7234:210:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":575,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7252:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7269:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:1","typeDescriptions":{}}},"id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7261:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7252:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":591,"nodeType":"Block","src":"7350:84:1","statements":[{"errorCall":{"arguments":[{"id":587,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7402:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":588,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7411:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":586,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"7375:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7375:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"7368:51:1"}]},"id":592,"nodeType":"IfStatement","src":"7248:186:1","trueBody":{"id":585,"nodeType":"Block","src":"7273:71:1","statements":[{"errorCall":{"arguments":[{"id":582,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7321:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":581,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"7298:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7298:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":584,"nodeType":"RevertStatement","src":"7291:38:1"}]}}]}}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"6654:423:1","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"7091:16:1","parameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"owner","nameLocation":"7116:5:1","nodeType":"VariableDeclaration","scope":596,"src":"7108:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":564,"mutability":"mutable","name":"spender","nameLocation":"7131:7:1","nodeType":"VariableDeclaration","scope":596,"src":"7123:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"7123:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":566,"mutability":"mutable","name":"tokenId","nameLocation":"7148:7:1","nodeType":"VariableDeclaration","scope":596,"src":"7140:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7107:49:1"},"returnParameters":{"id":568,"nodeType":"ParameterList","parameters":[],"src":"7179:0:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":612,"nodeType":"FunctionDefinition","src":"8092:153:1","nodes":[],"body":{"id":611,"nodeType":"Block","src":"8167:78:1","nodes":[],"statements":[{"id":610,"nodeType":"UncheckedBlock","src":"8177:62:1","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":604,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"8201:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":606,"indexExpression":{"id":605,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"8211:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8201:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"8223:5:1","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8201:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"8201:27:1"}]}]},"documentation":{"id":597,"nodeType":"StructuredDocumentation","src":"7456:631:1","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"8101:16:1","parameters":{"id":602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"account","nameLocation":"8126:7:1","nodeType":"VariableDeclaration","scope":612,"src":"8118:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":598,"name":"address","nodeType":"ElementaryTypeName","src":"8118:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":601,"mutability":"mutable","name":"value","nameLocation":"8143:5:1","nodeType":"VariableDeclaration","scope":612,"src":"8135:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":600,"name":"uint128","nodeType":"ElementaryTypeName","src":"8135:7:1","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"8117:32:1"},"returnParameters":{"id":603,"nodeType":"ParameterList","parameters":[],"src":"8167:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":702,"nodeType":"FunctionDefinition","src":"8838:795:1","nodes":[],"body":{"id":701,"nodeType":"Block","src":"8933:700:1","nodes":[],"statements":[{"assignments":[625],"declarations":[{"constant":false,"id":625,"mutability":"mutable","name":"from","nameLocation":"8951:4:1","nodeType":"VariableDeclaration","scope":701,"src":"8943:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":624,"name":"address","nodeType":"ElementaryTypeName","src":"8943:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":629,"initialValue":{"arguments":[{"id":627,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"8967:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":626,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"8958:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8958:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8943:32:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":630,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"9035:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9051:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9043:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"9043:7:1","typeDescriptions":{}}},"id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9043:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9035:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":643,"nodeType":"IfStatement","src":"9031:86:1","trueBody":{"id":642,"nodeType":"Block","src":"9055:62:1","statements":[{"expression":{"arguments":[{"id":637,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9086:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":638,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"9092:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":639,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9098:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":636,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"9069:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9069:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":641,"nodeType":"ExpressionStatement","src":"9069:37:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":644,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9161:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9177:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9169:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"9169:7:1","typeDescriptions":{}}},"id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9169:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9161:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":671,"nodeType":"IfStatement","src":"9157:256:1","trueBody":{"id":670,"nodeType":"Block","src":"9181:232:1","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9294:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9286:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":651,"name":"address","nodeType":"ElementaryTypeName","src":"9286:7:1","typeDescriptions":{}}},"id":654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":655,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9298:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9315:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9307:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":656,"name":"address","nodeType":"ElementaryTypeName","src":"9307:7:1","typeDescriptions":{}}},"id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9307:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9319:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":650,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":1014,"src":"9277:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9277:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"9277:48:1"},{"id":669,"nodeType":"UncheckedBlock","src":"9340:63:1","statements":[{"expression":{"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":663,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"9368:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":665,"indexExpression":{"id":664,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9378:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9368:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9387:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9368:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":668,"nodeType":"ExpressionStatement","src":"9368:20:1"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":672,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9427:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9441:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9433:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":673,"name":"address","nodeType":"ElementaryTypeName","src":"9433:7:1","typeDescriptions":{}}},"id":676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9433:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9427:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":686,"nodeType":"IfStatement","src":"9423:107:1","trueBody":{"id":685,"nodeType":"Block","src":"9445:85:1","statements":[{"id":684,"nodeType":"UncheckedBlock","src":"9459:61:1","statements":[{"expression":{"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":678,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"9487:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":680,"indexExpression":{"id":679,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9497:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9487:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9504:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9487:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":683,"nodeType":"ExpressionStatement","src":"9487:18:1"}]}]}},{"expression":{"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":687,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"9540:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":689,"indexExpression":{"id":688,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9548:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9540:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":690,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9559:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9540:21:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":692,"nodeType":"ExpressionStatement","src":"9540:21:1"},{"eventCall":{"arguments":[{"id":694,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9586:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":695,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9592:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":696,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9596:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":693,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"9577:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9577:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":698,"nodeType":"EmitStatement","src":"9572:32:1"},{"expression":{"id":699,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9622:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":623,"id":700,"nodeType":"Return","src":"9615:11:1"}]},"documentation":{"id":613,"nodeType":"StructuredDocumentation","src":"8251:582:1","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"8847:7:1","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":615,"mutability":"mutable","name":"to","nameLocation":"8863:2:1","nodeType":"VariableDeclaration","scope":702,"src":"8855:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":614,"name":"address","nodeType":"ElementaryTypeName","src":"8855:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"tokenId","nameLocation":"8875:7:1","nodeType":"VariableDeclaration","scope":702,"src":"8867:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":616,"name":"uint256","nodeType":"ElementaryTypeName","src":"8867:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":619,"mutability":"mutable","name":"auth","nameLocation":"8892:4:1","nodeType":"VariableDeclaration","scope":702,"src":"8884:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"8884:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8854:43:1"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":702,"src":"8924:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":621,"name":"address","nodeType":"ElementaryTypeName","src":"8924:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8923:9:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":752,"nodeType":"FunctionDefinition","src":"9955:327:1","nodes":[],"body":{"id":751,"nodeType":"Block","src":"10008:274:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":710,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"10022:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10028:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":711,"name":"address","nodeType":"ElementaryTypeName","src":"10028:7:1","typeDescriptions":{}}},"id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10028:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10022:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":724,"nodeType":"IfStatement","src":"10018:87:1","trueBody":{"id":723,"nodeType":"Block","src":"10040:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10091:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10083:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":717,"name":"address","nodeType":"ElementaryTypeName","src":"10083:7:1","typeDescriptions":{}}},"id":720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10083:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":716,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"10061:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10061:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":722,"nodeType":"RevertStatement","src":"10054:40:1"}]}},{"assignments":[726],"declarations":[{"constant":false,"id":726,"mutability":"mutable","name":"previousOwner","nameLocation":"10122:13:1","nodeType":"VariableDeclaration","scope":751,"src":"10114:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"10114:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":735,"initialValue":{"arguments":[{"id":728,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"10146:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":729,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"10150:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10159:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"10159:7:1","typeDescriptions":{}}},"id":733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10159:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":727,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"10138:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10138:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10114:56:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":736,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"10184:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10209:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10201:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":737,"name":"address","nodeType":"ElementaryTypeName","src":"10201:7:1","typeDescriptions":{}}},"id":740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10201:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10184:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":750,"nodeType":"IfStatement","src":"10180:96:1","trueBody":{"id":749,"nodeType":"Block","src":"10213:63:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10262:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10254:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"10254:7:1","typeDescriptions":{}}},"id":746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10254:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":742,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"10234:19:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":748,"nodeType":"RevertStatement","src":"10227:38:1"}]}}]},"documentation":{"id":703,"nodeType":"StructuredDocumentation","src":"9639:311:1","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9964:5:1","parameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"to","nameLocation":"9978:2:1","nodeType":"VariableDeclaration","scope":752,"src":"9970:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":704,"name":"address","nodeType":"ElementaryTypeName","src":"9970:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":707,"mutability":"mutable","name":"tokenId","nameLocation":"9990:7:1","nodeType":"VariableDeclaration","scope":752,"src":"9982:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":706,"name":"uint256","nodeType":"ElementaryTypeName","src":"9982:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9969:29:1"},"returnParameters":{"id":709,"nodeType":"ParameterList","parameters":[],"src":"10008:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":767,"nodeType":"FunctionDefinition","src":"10633:100:1","nodes":[],"body":{"id":766,"nodeType":"Block","src":"10690:43:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":761,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"10710:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":762,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"10714:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10723:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":760,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":793,"src":"10700:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10700:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":765,"nodeType":"ExpressionStatement","src":"10700:26:1"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"10288:340:1","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10642:9:1","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"to","nameLocation":"10660:2:1","nodeType":"VariableDeclaration","scope":767,"src":"10652:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"10652:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"tokenId","nameLocation":"10672:7:1","nodeType":"VariableDeclaration","scope":767,"src":"10664:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":756,"name":"uint256","nodeType":"ElementaryTypeName","src":"10664:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10651:29:1"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"10690:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":793,"nodeType":"FunctionDefinition","src":"10954:182:1","nodes":[],"body":{"id":792,"nodeType":"Block","src":"11038:98:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":778,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"11054:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":779,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"11058:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":777,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"11048:5:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11048:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":781,"nodeType":"ExpressionStatement","src":"11048:18:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11107:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11099:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"11099:7:1","typeDescriptions":{}}},"id":786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11099:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":787,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"11111:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":788,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"11115:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":789,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"11124:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":782,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"11076:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11076:53:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":791,"nodeType":"ExpressionStatement","src":"11076:53:1"}]},"documentation":{"id":768,"nodeType":"StructuredDocumentation","src":"10739:210:1","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10963:9:1","parameters":{"id":775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"to","nameLocation":"10981:2:1","nodeType":"VariableDeclaration","scope":793,"src":"10973:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"10973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"tokenId","nameLocation":"10993:7:1","nodeType":"VariableDeclaration","scope":793,"src":"10985:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"10985:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":774,"mutability":"mutable","name":"data","nameLocation":"11015:4:1","nodeType":"VariableDeclaration","scope":793,"src":"11002:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":773,"name":"bytes","nodeType":"ElementaryTypeName","src":"11002:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10972:48:1"},"returnParameters":{"id":776,"nodeType":"ParameterList","parameters":[],"src":"11038:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":826,"nodeType":"FunctionDefinition","src":"11462:227:1","nodes":[],"body":{"id":825,"nodeType":"Block","src":"11503:186:1","nodes":[],"statements":[{"assignments":[800],"declarations":[{"constant":false,"id":800,"mutability":"mutable","name":"previousOwner","nameLocation":"11521:13:1","nodeType":"VariableDeclaration","scope":825,"src":"11513:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":799,"name":"address","nodeType":"ElementaryTypeName","src":"11513:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11553:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11545:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":802,"name":"address","nodeType":"ElementaryTypeName","src":"11545:7:1","typeDescriptions":{}}},"id":805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11545:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":806,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"11557:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11566:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"11566:7:1","typeDescriptions":{}}},"id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11566:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":801,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"11537:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11537:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11513:64:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":813,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"11591:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11608:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"11608:7:1","typeDescriptions":{}}},"id":817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11608:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11591:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":824,"nodeType":"IfStatement","src":"11587:96:1","trueBody":{"id":823,"nodeType":"Block","src":"11620:63:1","statements":[{"errorCall":{"arguments":[{"id":820,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"11664:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":819,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"11641:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11641:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"RevertStatement","src":"11634:38:1"}]}}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"11142:315:1","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11471:5:1","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"tokenId","nameLocation":"11485:7:1","nodeType":"VariableDeclaration","scope":826,"src":"11477:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"11477:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11476:17:1"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[],"src":"11503:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":886,"nodeType":"FunctionDefinition","src":"12013:460:1","nodes":[],"body":{"id":885,"nodeType":"Block","src":"12084:389:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"12098:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12104:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":837,"name":"address","nodeType":"ElementaryTypeName","src":"12104:7:1","typeDescriptions":{}}},"id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12104:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12098:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":850,"nodeType":"IfStatement","src":"12094:87:1","trueBody":{"id":849,"nodeType":"Block","src":"12116:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12167:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12159:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":843,"name":"address","nodeType":"ElementaryTypeName","src":"12159:7:1","typeDescriptions":{}}},"id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12159:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":842,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"12137:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12137:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":848,"nodeType":"RevertStatement","src":"12130:40:1"}]}},{"assignments":[852],"declarations":[{"constant":false,"id":852,"mutability":"mutable","name":"previousOwner","nameLocation":"12198:13:1","nodeType":"VariableDeclaration","scope":885,"src":"12190:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"12190:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":861,"initialValue":{"arguments":[{"id":854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"12222:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12226:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12243:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12235:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":856,"name":"address","nodeType":"ElementaryTypeName","src":"12235:7:1","typeDescriptions":{}}},"id":859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12235:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":853,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"12214:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12214:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12190:56:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":862,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12260:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12277:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":863,"name":"address","nodeType":"ElementaryTypeName","src":"12277:7:1","typeDescriptions":{}}},"id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12260:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":873,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12362:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":874,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"12379:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12362:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":883,"nodeType":"IfStatement","src":"12358:109:1","trueBody":{"id":882,"nodeType":"Block","src":"12385:82:1","statements":[{"errorCall":{"arguments":[{"id":877,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"12427:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":878,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12433:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":879,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12442:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":876,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"12406:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12406:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":881,"nodeType":"RevertStatement","src":"12399:57:1"}]}},"id":884,"nodeType":"IfStatement","src":"12256:211:1","trueBody":{"id":872,"nodeType":"Block","src":"12289:63:1","statements":[{"errorCall":{"arguments":[{"id":869,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12333:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":868,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"12310:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12310:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":871,"nodeType":"RevertStatement","src":"12303:38:1"}]}}]},"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"11695:313:1","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"12022:9:1","parameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"from","nameLocation":"12040:4:1","nodeType":"VariableDeclaration","scope":886,"src":"12032:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":828,"name":"address","nodeType":"ElementaryTypeName","src":"12032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":831,"mutability":"mutable","name":"to","nameLocation":"12054:2:1","nodeType":"VariableDeclaration","scope":886,"src":"12046:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"12046:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":833,"mutability":"mutable","name":"tokenId","nameLocation":"12066:7:1","nodeType":"VariableDeclaration","scope":886,"src":"12058:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":832,"name":"uint256","nodeType":"ElementaryTypeName","src":"12058:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12031:43:1"},"returnParameters":{"id":835,"nodeType":"ParameterList","parameters":[],"src":"12084:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":904,"nodeType":"FunctionDefinition","src":"13406:128:1","nodes":[],"body":{"id":903,"nodeType":"Block","src":"13481:53:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":897,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"13505:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":898,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"13511:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":899,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"13515:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13524:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":896,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[904,930],"referencedDeclaration":930,"src":"13491:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13491:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":902,"nodeType":"ExpressionStatement","src":"13491:36:1"}]},"documentation":{"id":887,"nodeType":"StructuredDocumentation","src":"12479:922:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13415:13:1","parameters":{"id":894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"from","nameLocation":"13437:4:1","nodeType":"VariableDeclaration","scope":904,"src":"13429:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":888,"name":"address","nodeType":"ElementaryTypeName","src":"13429:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"to","nameLocation":"13451:2:1","nodeType":"VariableDeclaration","scope":904,"src":"13443:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"13443:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"tokenId","nameLocation":"13463:7:1","nodeType":"VariableDeclaration","scope":904,"src":"13455:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":892,"name":"uint256","nodeType":"ElementaryTypeName","src":"13455:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13428:43:1"},"returnParameters":{"id":895,"nodeType":"ParameterList","parameters":[],"src":"13481:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":930,"nodeType":"FunctionDefinition","src":"13771:204:1","nodes":[],"body":{"id":929,"nodeType":"Block","src":"13873:102:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":917,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"13893:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":918,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"13899:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":919,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"13903:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":916,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":886,"src":"13883:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13883:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"ExpressionStatement","src":"13883:28:1"},{"expression":{"arguments":[{"id":923,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"13944:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":924,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"13950:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":925,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"13954:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":926,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"13963:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":922,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"13921:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":928,"nodeType":"ExpressionStatement","src":"13921:47:1"}]},"documentation":{"id":905,"nodeType":"StructuredDocumentation","src":"13540:226:1","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13780:13:1","parameters":{"id":914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":907,"mutability":"mutable","name":"from","nameLocation":"13802:4:1","nodeType":"VariableDeclaration","scope":930,"src":"13794:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":906,"name":"address","nodeType":"ElementaryTypeName","src":"13794:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"to","nameLocation":"13816:2:1","nodeType":"VariableDeclaration","scope":930,"src":"13808:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":908,"name":"address","nodeType":"ElementaryTypeName","src":"13808:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":911,"mutability":"mutable","name":"tokenId","nameLocation":"13828:7:1","nodeType":"VariableDeclaration","scope":930,"src":"13820:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"13820:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":913,"mutability":"mutable","name":"data","nameLocation":"13850:4:1","nodeType":"VariableDeclaration","scope":930,"src":"13837:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":912,"name":"bytes","nodeType":"ElementaryTypeName","src":"13837:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13793:62:1"},"returnParameters":{"id":915,"nodeType":"ParameterList","parameters":[],"src":"13873:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":948,"nodeType":"FunctionDefinition","src":"14418:120:1","nodes":[],"body":{"id":947,"nodeType":"Block","src":"14488:50:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":941,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"14507:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":942,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"14511:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":943,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"14520:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14526:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":940,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":1014,"src":"14498:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14498:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":946,"nodeType":"ExpressionStatement","src":"14498:33:1"}]},"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"13981:432:1","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14427:8:1","parameters":{"id":938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":933,"mutability":"mutable","name":"to","nameLocation":"14444:2:1","nodeType":"VariableDeclaration","scope":948,"src":"14436:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"14436:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":935,"mutability":"mutable","name":"tokenId","nameLocation":"14456:7:1","nodeType":"VariableDeclaration","scope":948,"src":"14448:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":934,"name":"uint256","nodeType":"ElementaryTypeName","src":"14448:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":937,"mutability":"mutable","name":"auth","nameLocation":"14473:4:1","nodeType":"VariableDeclaration","scope":948,"src":"14465:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"14465:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14435:43:1"},"returnParameters":{"id":939,"nodeType":"ParameterList","parameters":[],"src":"14488:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1014,"nodeType":"FunctionDefinition","src":"14720:662:1","nodes":[],"body":{"id":1013,"nodeType":"Block","src":"14814:568:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":960,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"14880:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":961,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"14893:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14909:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14901:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":962,"name":"address","nodeType":"ElementaryTypeName","src":"14901:7:1","typeDescriptions":{}}},"id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14901:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14893:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14880:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1006,"nodeType":"IfStatement","src":"14876:460:1","trueBody":{"id":1005,"nodeType":"Block","src":"14913:423:1","statements":[{"assignments":[969],"declarations":[{"constant":false,"id":969,"mutability":"mutable","name":"owner","nameLocation":"14935:5:1","nodeType":"VariableDeclaration","scope":1005,"src":"14927:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":968,"name":"address","nodeType":"ElementaryTypeName","src":"14927:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":973,"initialValue":{"arguments":[{"id":971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"14957:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":970,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"14943:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14943:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14927:38:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":974,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15093:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15109:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15101:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":975,"name":"address","nodeType":"ElementaryTypeName","src":"15101:7:1","typeDescriptions":{}}},"id":978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15101:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15093:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":980,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15115:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":981,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15124:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15115:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15093:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15132:30:1","subExpression":{"arguments":[{"id":985,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15150:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":986,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15157:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":984,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"15133:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15133:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15093:69:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":995,"nodeType":"IfStatement","src":"15089:142:1","trueBody":{"id":994,"nodeType":"Block","src":"15164:67:1","statements":[{"errorCall":{"arguments":[{"id":991,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15211:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":990,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"15189:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15189:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":993,"nodeType":"RevertStatement","src":"15182:34:1"}]}},{"condition":{"id":996,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"15249:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1004,"nodeType":"IfStatement","src":"15245:81:1","trueBody":{"id":1003,"nodeType":"Block","src":"15260:66:1","statements":[{"eventCall":{"arguments":[{"id":998,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15292:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":999,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"15299:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1000,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15303:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":997,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"15283:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15283:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1002,"nodeType":"EmitStatement","src":"15278:33:1"}]}}]}},{"expression":{"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1007,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"15346:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1009,"indexExpression":{"id":1008,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15362:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15346:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1010,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"15373:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15346:29:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1012,"nodeType":"ExpressionStatement","src":"15346:29:1"}]},"documentation":{"id":949,"nodeType":"StructuredDocumentation","src":"14544:171:1","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14729:8:1","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":951,"mutability":"mutable","name":"to","nameLocation":"14746:2:1","nodeType":"VariableDeclaration","scope":1014,"src":"14738:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"14738:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":953,"mutability":"mutable","name":"tokenId","nameLocation":"14758:7:1","nodeType":"VariableDeclaration","scope":1014,"src":"14750:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":952,"name":"uint256","nodeType":"ElementaryTypeName","src":"14750:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"auth","nameLocation":"14775:4:1","nodeType":"VariableDeclaration","scope":1014,"src":"14767:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"14767:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"emitEvent","nameLocation":"14786:9:1","nodeType":"VariableDeclaration","scope":1014,"src":"14781:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":956,"name":"bool","nodeType":"ElementaryTypeName","src":"14781:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14737:59:1"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[],"src":"14814:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1051,"nodeType":"FunctionDefinition","src":"15591:312:1","nodes":[],"body":{"id":1050,"nodeType":"Block","src":"15684:219:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1024,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15698:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15718:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15710:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1025,"name":"address","nodeType":"ElementaryTypeName","src":"15710:7:1","typeDescriptions":{}}},"id":1028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15710:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15698:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1035,"nodeType":"IfStatement","src":"15694:91:1","trueBody":{"id":1034,"nodeType":"Block","src":"15722:63:1","statements":[{"errorCall":{"arguments":[{"id":1031,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15765:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1030,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"15743:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15743:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1033,"nodeType":"RevertStatement","src":"15736:38:1"}]}},{"expression":{"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1036,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"15794:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1039,"indexExpression":{"id":1037,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"15813:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15794:25:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1040,"indexExpression":{"id":1038,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15820:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15794:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1041,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"15832:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15794:46:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1043,"nodeType":"ExpressionStatement","src":"15794:46:1"},{"eventCall":{"arguments":[{"id":1045,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"15870:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1046,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15877:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1047,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"15887:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1044,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"15855:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15855:41:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1049,"nodeType":"EmitStatement","src":"15850:46:1"}]},"documentation":{"id":1015,"nodeType":"StructuredDocumentation","src":"15388:198:1","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"15600:18:1","parameters":{"id":1022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"owner","nameLocation":"15627:5:1","nodeType":"VariableDeclaration","scope":1051,"src":"15619:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"15619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"operator","nameLocation":"15642:8:1","nodeType":"VariableDeclaration","scope":1051,"src":"15634:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1018,"name":"address","nodeType":"ElementaryTypeName","src":"15634:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1021,"mutability":"mutable","name":"approved","nameLocation":"15657:8:1","nodeType":"VariableDeclaration","scope":1051,"src":"15652:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1020,"name":"bool","nodeType":"ElementaryTypeName","src":"15652:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15618:48:1"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[],"src":"15684:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1080,"nodeType":"FunctionDefinition","src":"16138:241:1","nodes":[],"body":{"id":1079,"nodeType":"Block","src":"16210:169:1","nodes":[],"statements":[{"assignments":[1060],"declarations":[{"constant":false,"id":1060,"mutability":"mutable","name":"owner","nameLocation":"16228:5:1","nodeType":"VariableDeclaration","scope":1079,"src":"16220:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1059,"name":"address","nodeType":"ElementaryTypeName","src":"16220:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1064,"initialValue":{"arguments":[{"id":1062,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"16245:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1061,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"16236:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16236:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16220:33:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1065,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"16267:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16284:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16276:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1066,"name":"address","nodeType":"ElementaryTypeName","src":"16276:7:1","typeDescriptions":{}}},"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16276:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16267:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1076,"nodeType":"IfStatement","src":"16263:88:1","trueBody":{"id":1075,"nodeType":"Block","src":"16288:63:1","statements":[{"errorCall":{"arguments":[{"id":1072,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"16332:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1071,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"16309:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16309:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1074,"nodeType":"RevertStatement","src":"16302:38:1"}]}},{"expression":{"id":1077,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"16367:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1058,"id":1078,"nodeType":"Return","src":"16360:12:1"}]},"documentation":{"id":1052,"nodeType":"StructuredDocumentation","src":"15909:224:1","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"16147:13:1","parameters":{"id":1055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1054,"mutability":"mutable","name":"tokenId","nameLocation":"16169:7:1","nodeType":"VariableDeclaration","scope":1080,"src":"16161:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"16161:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16160:17:1"},"returnParameters":{"id":1058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1080,"src":"16201:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1056,"name":"address","nodeType":"ElementaryTypeName","src":"16201:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16200:9:1"},"scope":1145,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1144,"nodeType":"FunctionDefinition","src":"16918:782:1","nodes":[],"body":{"id":1143,"nodeType":"Block","src":"17020:680:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1092,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17034:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17037:4:1","memberName":"code","nodeType":"MemberAccess","src":"17034:7:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17042:6:1","memberName":"length","nodeType":"MemberAccess","src":"17034:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17051:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17034:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1142,"nodeType":"IfStatement","src":"17030:664:1","trueBody":{"id":1141,"nodeType":"Block","src":"17054:640:1","statements":[{"clauses":[{"block":{"id":1121,"nodeType":"Block","src":"17168:162:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1110,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1108,"src":"17190:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":1111,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"17200:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1280_$","typeString":"type(contract IERC721Receiver)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17216:16:1","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1279,"src":"17200:32:1","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17233:8:1","memberName":"selector","nodeType":"MemberAccess","src":"17200:41:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"17190:51:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1120,"nodeType":"IfStatement","src":"17186:130:1","trueBody":{"id":1119,"nodeType":"Block","src":"17243:73:1","statements":[{"errorCall":{"arguments":[{"id":1116,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17294:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1115,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"17272:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17272:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1118,"nodeType":"RevertStatement","src":"17265:32:1"}]}}]},"errorName":"","id":1122,"nodeType":"TryCatchClause","parameters":{"id":1109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1108,"mutability":"mutable","name":"retval","nameLocation":"17160:6:1","nodeType":"VariableDeclaration","scope":1122,"src":"17153:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1107,"name":"bytes4","nodeType":"ElementaryTypeName","src":"17153:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"17152:15:1"},"src":"17144:186:1"},{"block":{"id":1138,"nodeType":"Block","src":"17359:325:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1126,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1124,"src":"17381:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17388:6:1","memberName":"length","nodeType":"MemberAccess","src":"17381:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17398:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17381:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1136,"nodeType":"Block","src":"17480:190:1","statements":[{"AST":{"nativeSrc":"17566:86:1","nodeType":"YulBlock","src":"17566:86:1","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17603:2:1","nodeType":"YulLiteral","src":"17603:2:1","type":"","value":"32"},{"name":"reason","nativeSrc":"17607:6:1","nodeType":"YulIdentifier","src":"17607:6:1"}],"functionName":{"name":"add","nativeSrc":"17599:3:1","nodeType":"YulIdentifier","src":"17599:3:1"},"nativeSrc":"17599:15:1","nodeType":"YulFunctionCall","src":"17599:15:1"},{"arguments":[{"name":"reason","nativeSrc":"17622:6:1","nodeType":"YulIdentifier","src":"17622:6:1"}],"functionName":{"name":"mload","nativeSrc":"17616:5:1","nodeType":"YulIdentifier","src":"17616:5:1"},"nativeSrc":"17616:13:1","nodeType":"YulFunctionCall","src":"17616:13:1"}],"functionName":{"name":"revert","nativeSrc":"17592:6:1","nodeType":"YulIdentifier","src":"17592:6:1"},"nativeSrc":"17592:38:1","nodeType":"YulFunctionCall","src":"17592:38:1"},"nativeSrc":"17592:38:1","nodeType":"YulExpressionStatement","src":"17592:38:1"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1124,"isOffset":false,"isSlot":false,"src":"17607:6:1","valueSize":1},{"declaration":1124,"isOffset":false,"isSlot":false,"src":"17622:6:1","valueSize":1}],"id":1135,"nodeType":"InlineAssembly","src":"17557:95:1"}]},"id":1137,"nodeType":"IfStatement","src":"17377:293:1","trueBody":{"id":1134,"nodeType":"Block","src":"17401:73:1","statements":[{"errorCall":{"arguments":[{"id":1131,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17452:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1130,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"17430:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17430:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1133,"nodeType":"RevertStatement","src":"17423:32:1"}]}}]},"errorName":"","id":1139,"nodeType":"TryCatchClause","parameters":{"id":1125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1124,"mutability":"mutable","name":"reason","nameLocation":"17351:6:1","nodeType":"VariableDeclaration","scope":1139,"src":"17338:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1123,"name":"bytes","nodeType":"ElementaryTypeName","src":"17338:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17337:21:1"},"src":"17331:353:1"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1101,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"17109:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17109:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1103,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"17123:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1104,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"17129:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1105,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"17138:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":1098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17088:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1097,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"17072:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1280_$","typeString":"type(contract IERC721Receiver)"}},"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17072:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1280","typeString":"contract IERC721Receiver"}},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17092:16:1","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1279,"src":"17072:36:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17072:71:1","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1140,"nodeType":"TryStatement","src":"17068:616:1"}]}}]},"documentation":{"id":1081,"nodeType":"StructuredDocumentation","src":"16385:528:1","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"16927:22:1","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"mutability":"mutable","name":"from","nameLocation":"16958:4:1","nodeType":"VariableDeclaration","scope":1144,"src":"16950:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1082,"name":"address","nodeType":"ElementaryTypeName","src":"16950:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1085,"mutability":"mutable","name":"to","nameLocation":"16972:2:1","nodeType":"VariableDeclaration","scope":1144,"src":"16964:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1084,"name":"address","nodeType":"ElementaryTypeName","src":"16964:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1087,"mutability":"mutable","name":"tokenId","nameLocation":"16984:7:1","nodeType":"VariableDeclaration","scope":1144,"src":"16976:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1086,"name":"uint256","nodeType":"ElementaryTypeName","src":"16976:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1089,"mutability":"mutable","name":"data","nameLocation":"17006:4:1","nodeType":"VariableDeclaration","scope":1144,"src":"16993:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1088,"name":"bytes","nodeType":"ElementaryTypeName","src":"16993:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16949:62:1"},"returnParameters":{"id":1091,"nodeType":"ParameterList","parameters":[],"src":"17020:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":155,"name":"Context","nameLocations":["804:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1338,"src":"804:7:1"},"id":156,"nodeType":"InheritanceSpecifier","src":"804:7:1"},{"baseName":{"id":157,"name":"ERC165","nameLocations":["813:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1617,"src":"813:6:1"},"id":158,"nodeType":"InheritanceSpecifier","src":"813:6:1"},{"baseName":{"id":159,"name":"IERC721","nameLocations":["821:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1262,"src":"821:7:1"},"id":160,"nodeType":"InheritanceSpecifier","src":"821:7:1"},{"baseName":{"id":161,"name":"IERC721Metadata","nameLocations":["830:15:1"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"830:15:1"},"id":162,"nodeType":"InheritanceSpecifier","src":"830:15:1"},{"baseName":{"id":163,"name":"IERC721Errors","nameLocations":["847:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"847:13:1"},"id":164,"nodeType":"InheritanceSpecifier","src":"847:13:1"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"529:246:1","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[1145,89,1308,1262,1617,1629,1338],"name":"ERC721","nameLocation":"794:6:1","scope":1146,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":1} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json b/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json index 1fa989e..9598489 100644 --- a/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json +++ b/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","id":1630,"exportedSymbols":{"IERC165":[1629]},"nodeType":"SourceUnit","src":"115:754:8","nodes":[{"id":1619,"nodeType":"PragmaDirective","src":"115:24:8","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1629,"nodeType":"ContractDefinition","src":"421:447:8","nodes":[{"id":1628,"nodeType":"FunctionDefinition","src":"790:76:8","nodes":[],"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"445:340:8","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:8","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1623,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:8","nodeType":"VariableDeclaration","scope":1628,"src":"817:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1622,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:8"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1628,"src":"860:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1625,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:8"},"scope":1629,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"141:279:8","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1629],"name":"IERC165","nameLocation":"431:7:8","scope":1630,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":8} \ No newline at end of file +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","id":1630,"exportedSymbols":{"IERC165":[1629]},"nodeType":"SourceUnit","src":"115:754:8","nodes":[{"id":1619,"nodeType":"PragmaDirective","src":"115:24:8","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1629,"nodeType":"ContractDefinition","src":"421:447:8","nodes":[{"id":1628,"nodeType":"FunctionDefinition","src":"790:76:8","nodes":[],"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"445:340:8","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:8","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1623,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:8","nodeType":"VariableDeclaration","scope":1628,"src":"817:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1622,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:8"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1628,"src":"860:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1625,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:8"},"scope":1629,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"141:279:8","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1629],"name":"IERC165","nameLocation":"431:7:8","scope":1630,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":8} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json b/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json index 306dddc..d355336 100644 --- a/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json +++ b/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":"IERC721"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","id":1263,"exportedSymbols":{"IERC165":[1629],"IERC721":[1262]},"nodeType":"SourceUnit","src":"108:4818:2","nodes":[{"id":1147,"nodeType":"PragmaDirective","src":"108:24:2","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1149,"nodeType":"ImportDirective","src":"134:62:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":1263,"sourceUnit":1630,"symbolAliases":[{"foreign":{"id":1148,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"142:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1262,"nodeType":"ContractDefinition","src":"266:4659:2","nodes":[{"id":1161,"nodeType":"EventDefinition","src":"394:82:2","nodes":[],"anonymous":false,"documentation":{"id":1153,"nodeType":"StructuredDocumentation","src":"301:88:2","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"400:8:2","parameters":{"id":1160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1155,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"425:4:2","nodeType":"VariableDeclaration","scope":1161,"src":"409:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1157,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"447:2:2","nodeType":"VariableDeclaration","scope":1161,"src":"431:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1156,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1159,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"467:7:2","nodeType":"VariableDeclaration","scope":1161,"src":"451:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"408:67:2"}},{"id":1170,"nodeType":"EventDefinition","src":"581:89:2","nodes":[],"anonymous":false,"documentation":{"id":1162,"nodeType":"StructuredDocumentation","src":"482:94:2","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"587:8:2","parameters":{"id":1169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1164,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"612:5:2","nodeType":"VariableDeclaration","scope":1170,"src":"596:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1163,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1166,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"635:8:2","nodeType":"VariableDeclaration","scope":1170,"src":"619:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1165,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1168,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"661:7:2","nodeType":"VariableDeclaration","scope":1170,"src":"645:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1167,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"595:74:2"}},{"id":1179,"nodeType":"EventDefinition","src":"798:85:2","nodes":[],"anonymous":false,"documentation":{"id":1171,"nodeType":"StructuredDocumentation","src":"676:117:2","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"804:14:2","parameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1173,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"835:5:2","nodeType":"VariableDeclaration","scope":1179,"src":"819:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1175,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"858:8:2","nodeType":"VariableDeclaration","scope":1179,"src":"842:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1174,"name":"address","nodeType":"ElementaryTypeName","src":"842:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1177,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"873:8:2","nodeType":"VariableDeclaration","scope":1179,"src":"868:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1176,"name":"bool","nodeType":"ElementaryTypeName","src":"868:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"818:64:2"}},{"id":1187,"nodeType":"FunctionDefinition","src":"970:74:2","nodes":[],"documentation":{"id":1180,"nodeType":"StructuredDocumentation","src":"889:76:2","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"979:9:2","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"owner","nameLocation":"997:5:2","nodeType":"VariableDeclaration","scope":1187,"src":"989:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1181,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"988:15:2"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"balance","nameLocation":"1035:7:2","nodeType":"VariableDeclaration","scope":1187,"src":"1027:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1027:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1026:17:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1195,"nodeType":"FunctionDefinition","src":"1186:72:2","nodes":[],"documentation":{"id":1188,"nodeType":"StructuredDocumentation","src":"1050:131:2","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1195:7:2","parameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"tokenId","nameLocation":"1211:7:2","nodeType":"VariableDeclaration","scope":1195,"src":"1203:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1202:17:2"},"returnParameters":{"id":1194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1193,"mutability":"mutable","name":"owner","nameLocation":"1251:5:2","nodeType":"VariableDeclaration","scope":1195,"src":"1243:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1192,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1242:15:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1207,"nodeType":"FunctionDefinition","src":"1834:99:2","nodes":[],"documentation":{"id":1196,"nodeType":"StructuredDocumentation","src":"1264:565:2","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1843:16:2","parameters":{"id":1205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"from","nameLocation":"1868:4:2","nodeType":"VariableDeclaration","scope":1207,"src":"1860:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1197,"name":"address","nodeType":"ElementaryTypeName","src":"1860:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"to","nameLocation":"1882:2:2","nodeType":"VariableDeclaration","scope":1207,"src":"1874:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1199,"name":"address","nodeType":"ElementaryTypeName","src":"1874:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1202,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:2","nodeType":"VariableDeclaration","scope":1207,"src":"1886:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1204,"mutability":"mutable","name":"data","nameLocation":"1918:4:2","nodeType":"VariableDeclaration","scope":1207,"src":"1903:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1203,"name":"bytes","nodeType":"ElementaryTypeName","src":"1903:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1859:64:2"},"returnParameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"1932:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1217,"nodeType":"FunctionDefinition","src":"2649:78:2","nodes":[],"documentation":{"id":1208,"nodeType":"StructuredDocumentation","src":"1939:705:2","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2658:16:2","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1210,"mutability":"mutable","name":"from","nameLocation":"2683:4:2","nodeType":"VariableDeclaration","scope":1217,"src":"2675:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1209,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1212,"mutability":"mutable","name":"to","nameLocation":"2697:2:2","nodeType":"VariableDeclaration","scope":1217,"src":"2689:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1211,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1214,"mutability":"mutable","name":"tokenId","nameLocation":"2709:7:2","nodeType":"VariableDeclaration","scope":1217,"src":"2701:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1213,"name":"uint256","nodeType":"ElementaryTypeName","src":"2701:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2674:43:2"},"returnParameters":{"id":1216,"nodeType":"ParameterList","parameters":[],"src":"2726:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1227,"nodeType":"FunctionDefinition","src":"3470:74:2","nodes":[],"documentation":{"id":1218,"nodeType":"StructuredDocumentation","src":"2733:732:2","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3479:12:2","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"from","nameLocation":"3500:4:2","nodeType":"VariableDeclaration","scope":1227,"src":"3492:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1219,"name":"address","nodeType":"ElementaryTypeName","src":"3492:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"to","nameLocation":"3514:2:2","nodeType":"VariableDeclaration","scope":1227,"src":"3506:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1221,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1224,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:2","nodeType":"VariableDeclaration","scope":1227,"src":"3518:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1223,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:43:2"},"returnParameters":{"id":1226,"nodeType":"ParameterList","parameters":[],"src":"3543:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1235,"nodeType":"FunctionDefinition","src":"4007:55:2","nodes":[],"documentation":{"id":1228,"nodeType":"StructuredDocumentation","src":"3550:452:2","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4016:7:2","parameters":{"id":1233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1230,"mutability":"mutable","name":"to","nameLocation":"4032:2:2","nodeType":"VariableDeclaration","scope":1235,"src":"4024:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1229,"name":"address","nodeType":"ElementaryTypeName","src":"4024:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1232,"mutability":"mutable","name":"tokenId","nameLocation":"4044:7:2","nodeType":"VariableDeclaration","scope":1235,"src":"4036:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1231,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4023:29:2"},"returnParameters":{"id":1234,"nodeType":"ParameterList","parameters":[],"src":"4061:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1243,"nodeType":"FunctionDefinition","src":"4388:69:2","nodes":[],"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"4068:315:2","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4397:17:2","parameters":{"id":1241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"operator","nameLocation":"4423:8:2","nodeType":"VariableDeclaration","scope":1243,"src":"4415:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1237,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1240,"mutability":"mutable","name":"approved","nameLocation":"4438:8:2","nodeType":"VariableDeclaration","scope":1243,"src":"4433:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1239,"name":"bool","nodeType":"ElementaryTypeName","src":"4433:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4414:33:2"},"returnParameters":{"id":1242,"nodeType":"ParameterList","parameters":[],"src":"4456:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1251,"nodeType":"FunctionDefinition","src":"4607:79:2","nodes":[],"documentation":{"id":1244,"nodeType":"StructuredDocumentation","src":"4463:139:2","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4616:11:2","parameters":{"id":1247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"tokenId","nameLocation":"4636:7:2","nodeType":"VariableDeclaration","scope":1251,"src":"4628:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"4628:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4627:17:2"},"returnParameters":{"id":1250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"operator","nameLocation":"4676:8:2","nodeType":"VariableDeclaration","scope":1251,"src":"4668:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"4668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4667:18:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1261,"nodeType":"FunctionDefinition","src":"4835:88:2","nodes":[],"documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"4692:138:2","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4844:16:2","parameters":{"id":1257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1254,"mutability":"mutable","name":"owner","nameLocation":"4869:5:2","nodeType":"VariableDeclaration","scope":1261,"src":"4861:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1253,"name":"address","nodeType":"ElementaryTypeName","src":"4861:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1256,"mutability":"mutable","name":"operator","nameLocation":"4884:8:2","nodeType":"VariableDeclaration","scope":1261,"src":"4876:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1255,"name":"address","nodeType":"ElementaryTypeName","src":"4876:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4860:33:2"},"returnParameters":{"id":1260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1261,"src":"4917:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1258,"name":"bool","nodeType":"ElementaryTypeName","src":"4917:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4916:6:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1151,"name":"IERC165","nameLocations":["287:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"287:7:2"},"id":1152,"nodeType":"InheritanceSpecifier","src":"287:7:2"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1150,"nodeType":"StructuredDocumentation","src":"198:67:2","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1262,1629],"name":"IERC721","nameLocation":"276:7:2","scope":1263,"usedErrors":[],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":2} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","id":1263,"exportedSymbols":{"IERC165":[1629],"IERC721":[1262]},"nodeType":"SourceUnit","src":"108:4818:2","nodes":[{"id":1147,"nodeType":"PragmaDirective","src":"108:24:2","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1149,"nodeType":"ImportDirective","src":"134:62:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":1263,"sourceUnit":1630,"symbolAliases":[{"foreign":{"id":1148,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"142:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1262,"nodeType":"ContractDefinition","src":"266:4659:2","nodes":[{"id":1161,"nodeType":"EventDefinition","src":"394:82:2","nodes":[],"anonymous":false,"documentation":{"id":1153,"nodeType":"StructuredDocumentation","src":"301:88:2","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"400:8:2","parameters":{"id":1160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1155,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"425:4:2","nodeType":"VariableDeclaration","scope":1161,"src":"409:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1157,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"447:2:2","nodeType":"VariableDeclaration","scope":1161,"src":"431:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1156,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1159,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"467:7:2","nodeType":"VariableDeclaration","scope":1161,"src":"451:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"408:67:2"}},{"id":1170,"nodeType":"EventDefinition","src":"581:89:2","nodes":[],"anonymous":false,"documentation":{"id":1162,"nodeType":"StructuredDocumentation","src":"482:94:2","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"587:8:2","parameters":{"id":1169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1164,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"612:5:2","nodeType":"VariableDeclaration","scope":1170,"src":"596:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1163,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1166,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"635:8:2","nodeType":"VariableDeclaration","scope":1170,"src":"619:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1165,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1168,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"661:7:2","nodeType":"VariableDeclaration","scope":1170,"src":"645:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1167,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"595:74:2"}},{"id":1179,"nodeType":"EventDefinition","src":"798:85:2","nodes":[],"anonymous":false,"documentation":{"id":1171,"nodeType":"StructuredDocumentation","src":"676:117:2","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"804:14:2","parameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1173,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"835:5:2","nodeType":"VariableDeclaration","scope":1179,"src":"819:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1175,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"858:8:2","nodeType":"VariableDeclaration","scope":1179,"src":"842:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1174,"name":"address","nodeType":"ElementaryTypeName","src":"842:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1177,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"873:8:2","nodeType":"VariableDeclaration","scope":1179,"src":"868:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1176,"name":"bool","nodeType":"ElementaryTypeName","src":"868:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"818:64:2"}},{"id":1187,"nodeType":"FunctionDefinition","src":"970:74:2","nodes":[],"documentation":{"id":1180,"nodeType":"StructuredDocumentation","src":"889:76:2","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"979:9:2","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"owner","nameLocation":"997:5:2","nodeType":"VariableDeclaration","scope":1187,"src":"989:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1181,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"988:15:2"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"balance","nameLocation":"1035:7:2","nodeType":"VariableDeclaration","scope":1187,"src":"1027:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1027:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1026:17:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1195,"nodeType":"FunctionDefinition","src":"1186:72:2","nodes":[],"documentation":{"id":1188,"nodeType":"StructuredDocumentation","src":"1050:131:2","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1195:7:2","parameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"tokenId","nameLocation":"1211:7:2","nodeType":"VariableDeclaration","scope":1195,"src":"1203:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1202:17:2"},"returnParameters":{"id":1194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1193,"mutability":"mutable","name":"owner","nameLocation":"1251:5:2","nodeType":"VariableDeclaration","scope":1195,"src":"1243:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1192,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1242:15:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1207,"nodeType":"FunctionDefinition","src":"1834:99:2","nodes":[],"documentation":{"id":1196,"nodeType":"StructuredDocumentation","src":"1264:565:2","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1843:16:2","parameters":{"id":1205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"from","nameLocation":"1868:4:2","nodeType":"VariableDeclaration","scope":1207,"src":"1860:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1197,"name":"address","nodeType":"ElementaryTypeName","src":"1860:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"to","nameLocation":"1882:2:2","nodeType":"VariableDeclaration","scope":1207,"src":"1874:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1199,"name":"address","nodeType":"ElementaryTypeName","src":"1874:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1202,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:2","nodeType":"VariableDeclaration","scope":1207,"src":"1886:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1204,"mutability":"mutable","name":"data","nameLocation":"1918:4:2","nodeType":"VariableDeclaration","scope":1207,"src":"1903:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1203,"name":"bytes","nodeType":"ElementaryTypeName","src":"1903:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1859:64:2"},"returnParameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"1932:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1217,"nodeType":"FunctionDefinition","src":"2649:78:2","nodes":[],"documentation":{"id":1208,"nodeType":"StructuredDocumentation","src":"1939:705:2","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2658:16:2","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1210,"mutability":"mutable","name":"from","nameLocation":"2683:4:2","nodeType":"VariableDeclaration","scope":1217,"src":"2675:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1209,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1212,"mutability":"mutable","name":"to","nameLocation":"2697:2:2","nodeType":"VariableDeclaration","scope":1217,"src":"2689:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1211,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1214,"mutability":"mutable","name":"tokenId","nameLocation":"2709:7:2","nodeType":"VariableDeclaration","scope":1217,"src":"2701:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1213,"name":"uint256","nodeType":"ElementaryTypeName","src":"2701:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2674:43:2"},"returnParameters":{"id":1216,"nodeType":"ParameterList","parameters":[],"src":"2726:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1227,"nodeType":"FunctionDefinition","src":"3470:74:2","nodes":[],"documentation":{"id":1218,"nodeType":"StructuredDocumentation","src":"2733:732:2","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3479:12:2","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"from","nameLocation":"3500:4:2","nodeType":"VariableDeclaration","scope":1227,"src":"3492:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1219,"name":"address","nodeType":"ElementaryTypeName","src":"3492:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"to","nameLocation":"3514:2:2","nodeType":"VariableDeclaration","scope":1227,"src":"3506:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1221,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1224,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:2","nodeType":"VariableDeclaration","scope":1227,"src":"3518:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1223,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:43:2"},"returnParameters":{"id":1226,"nodeType":"ParameterList","parameters":[],"src":"3543:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1235,"nodeType":"FunctionDefinition","src":"4007:55:2","nodes":[],"documentation":{"id":1228,"nodeType":"StructuredDocumentation","src":"3550:452:2","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4016:7:2","parameters":{"id":1233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1230,"mutability":"mutable","name":"to","nameLocation":"4032:2:2","nodeType":"VariableDeclaration","scope":1235,"src":"4024:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1229,"name":"address","nodeType":"ElementaryTypeName","src":"4024:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1232,"mutability":"mutable","name":"tokenId","nameLocation":"4044:7:2","nodeType":"VariableDeclaration","scope":1235,"src":"4036:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1231,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4023:29:2"},"returnParameters":{"id":1234,"nodeType":"ParameterList","parameters":[],"src":"4061:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1243,"nodeType":"FunctionDefinition","src":"4388:69:2","nodes":[],"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"4068:315:2","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4397:17:2","parameters":{"id":1241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"operator","nameLocation":"4423:8:2","nodeType":"VariableDeclaration","scope":1243,"src":"4415:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1237,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1240,"mutability":"mutable","name":"approved","nameLocation":"4438:8:2","nodeType":"VariableDeclaration","scope":1243,"src":"4433:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1239,"name":"bool","nodeType":"ElementaryTypeName","src":"4433:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4414:33:2"},"returnParameters":{"id":1242,"nodeType":"ParameterList","parameters":[],"src":"4456:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1251,"nodeType":"FunctionDefinition","src":"4607:79:2","nodes":[],"documentation":{"id":1244,"nodeType":"StructuredDocumentation","src":"4463:139:2","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4616:11:2","parameters":{"id":1247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"tokenId","nameLocation":"4636:7:2","nodeType":"VariableDeclaration","scope":1251,"src":"4628:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"4628:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4627:17:2"},"returnParameters":{"id":1250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"operator","nameLocation":"4676:8:2","nodeType":"VariableDeclaration","scope":1251,"src":"4668:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"4668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4667:18:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1261,"nodeType":"FunctionDefinition","src":"4835:88:2","nodes":[],"documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"4692:138:2","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4844:16:2","parameters":{"id":1257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1254,"mutability":"mutable","name":"owner","nameLocation":"4869:5:2","nodeType":"VariableDeclaration","scope":1261,"src":"4861:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1253,"name":"address","nodeType":"ElementaryTypeName","src":"4861:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1256,"mutability":"mutable","name":"operator","nameLocation":"4884:8:2","nodeType":"VariableDeclaration","scope":1261,"src":"4876:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1255,"name":"address","nodeType":"ElementaryTypeName","src":"4876:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4860:33:2"},"returnParameters":{"id":1260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1261,"src":"4917:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1258,"name":"bool","nodeType":"ElementaryTypeName","src":"4917:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4916:6:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1151,"name":"IERC165","nameLocations":["287:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"287:7:2"},"id":1152,"nodeType":"InheritanceSpecifier","src":"287:7:2"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1150,"nodeType":"StructuredDocumentation","src":"198:67:2","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1262,1629],"name":"IERC721","nameLocation":"276:7:2","scope":1263,"usedErrors":[],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":2} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json b/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json index cb4e4f2..e593845 100644 --- a/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json +++ b/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":"IERC721Metadata"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":1309,"exportedSymbols":{"IERC721":[1262],"IERC721Metadata":[1308]},"nodeType":"SourceUnit","src":"127:665:4","nodes":[{"id":1282,"nodeType":"PragmaDirective","src":"127:24:4","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1284,"nodeType":"ImportDirective","src":"153:39:4","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","nameLocation":"-1:-1:-1","scope":1309,"sourceUnit":1263,"symbolAliases":[{"foreign":{"id":1283,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"161:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1308,"nodeType":"ContractDefinition","src":"328:463:4","nodes":[{"id":1293,"nodeType":"FunctionDefinition","src":"434:54:4","nodes":[],"documentation":{"id":1288,"nodeType":"StructuredDocumentation","src":"371:58:4","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"443:4:4","parameters":{"id":1289,"nodeType":"ParameterList","parameters":[],"src":"447:2:4"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1293,"src":"473:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1290,"name":"string","nodeType":"ElementaryTypeName","src":"473:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"472:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1299,"nodeType":"FunctionDefinition","src":"559:56:4","nodes":[],"documentation":{"id":1294,"nodeType":"StructuredDocumentation","src":"494:60:4","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"568:6:4","parameters":{"id":1295,"nodeType":"ParameterList","parameters":[],"src":"574:2:4"},"returnParameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1299,"src":"600:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1296,"name":"string","nodeType":"ElementaryTypeName","src":"600:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"599:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1307,"nodeType":"FunctionDefinition","src":"716:73:4","nodes":[],"documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"621:90:4","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"725:8:4","parameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"tokenId","nameLocation":"742:7:4","nodeType":"VariableDeclaration","scope":1307,"src":"734:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:17:4"},"returnParameters":{"id":1306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1307,"src":"774:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1304,"name":"string","nodeType":"ElementaryTypeName","src":"774:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"773:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1286,"name":"IERC721","nameLocations":["357:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1262,"src":"357:7:4"},"id":1287,"nodeType":"InheritanceSpecifier","src":"357:7:4"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"194:133:4","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1308,1262,1629],"name":"IERC721Metadata","nameLocation":"338:15:4","scope":1309,"usedErrors":[],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":4} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":1309,"exportedSymbols":{"IERC721":[1262],"IERC721Metadata":[1308]},"nodeType":"SourceUnit","src":"127:665:4","nodes":[{"id":1282,"nodeType":"PragmaDirective","src":"127:24:4","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1284,"nodeType":"ImportDirective","src":"153:39:4","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","nameLocation":"-1:-1:-1","scope":1309,"sourceUnit":1263,"symbolAliases":[{"foreign":{"id":1283,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"161:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1308,"nodeType":"ContractDefinition","src":"328:463:4","nodes":[{"id":1293,"nodeType":"FunctionDefinition","src":"434:54:4","nodes":[],"documentation":{"id":1288,"nodeType":"StructuredDocumentation","src":"371:58:4","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"443:4:4","parameters":{"id":1289,"nodeType":"ParameterList","parameters":[],"src":"447:2:4"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1293,"src":"473:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1290,"name":"string","nodeType":"ElementaryTypeName","src":"473:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"472:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1299,"nodeType":"FunctionDefinition","src":"559:56:4","nodes":[],"documentation":{"id":1294,"nodeType":"StructuredDocumentation","src":"494:60:4","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"568:6:4","parameters":{"id":1295,"nodeType":"ParameterList","parameters":[],"src":"574:2:4"},"returnParameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1299,"src":"600:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1296,"name":"string","nodeType":"ElementaryTypeName","src":"600:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"599:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1307,"nodeType":"FunctionDefinition","src":"716:73:4","nodes":[],"documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"621:90:4","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"725:8:4","parameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"tokenId","nameLocation":"742:7:4","nodeType":"VariableDeclaration","scope":1307,"src":"734:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:17:4"},"returnParameters":{"id":1306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1307,"src":"774:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1304,"name":"string","nodeType":"ElementaryTypeName","src":"774:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"773:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1286,"name":"IERC721","nameLocations":["357:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1262,"src":"357:7:4"},"id":1287,"nodeType":"InheritanceSpecifier","src":"357:7:4"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"194:133:4","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1308,1262,1629],"name":"IERC721Metadata","nameLocation":"338:15:4","scope":1309,"usedErrors":[],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":4} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json b/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json index b4dd84d..35e24a5 100644 --- a/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json +++ b/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":"IERC721Receiver"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","id":1281,"exportedSymbols":{"IERC721Receiver":[1280]},"nodeType":"SourceUnit","src":"116:879:3","nodes":[{"id":1264,"nodeType":"PragmaDirective","src":"116:24:3","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1280,"nodeType":"ContractDefinition","src":"295:699:3","nodes":[{"id":1279,"nodeType":"FunctionDefinition","src":"832:160:3","nodes":[],"documentation":{"id":1266,"nodeType":"StructuredDocumentation","src":"327:500:3","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"841:16:3","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1268,"mutability":"mutable","name":"operator","nameLocation":"875:8:3","nodeType":"VariableDeclaration","scope":1279,"src":"867:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1267,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1270,"mutability":"mutable","name":"from","nameLocation":"901:4:3","nodeType":"VariableDeclaration","scope":1279,"src":"893:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1269,"name":"address","nodeType":"ElementaryTypeName","src":"893:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1272,"mutability":"mutable","name":"tokenId","nameLocation":"923:7:3","nodeType":"VariableDeclaration","scope":1279,"src":"915:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"915:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"data","nameLocation":"955:4:3","nodeType":"VariableDeclaration","scope":1279,"src":"940:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1273,"name":"bytes","nodeType":"ElementaryTypeName","src":"940:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"857:108:3"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1279,"src":"984:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1276,"name":"bytes4","nodeType":"ElementaryTypeName","src":"984:6:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"983:8:3"},"scope":1280,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"142:152:3","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1280],"name":"IERC721Receiver","nameLocation":"305:15:3","scope":1281,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":3} \ No newline at end of file +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":"IERC721Receiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","id":1281,"exportedSymbols":{"IERC721Receiver":[1280]},"nodeType":"SourceUnit","src":"116:879:3","nodes":[{"id":1264,"nodeType":"PragmaDirective","src":"116:24:3","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1280,"nodeType":"ContractDefinition","src":"295:699:3","nodes":[{"id":1279,"nodeType":"FunctionDefinition","src":"832:160:3","nodes":[],"documentation":{"id":1266,"nodeType":"StructuredDocumentation","src":"327:500:3","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"841:16:3","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1268,"mutability":"mutable","name":"operator","nameLocation":"875:8:3","nodeType":"VariableDeclaration","scope":1279,"src":"867:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1267,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1270,"mutability":"mutable","name":"from","nameLocation":"901:4:3","nodeType":"VariableDeclaration","scope":1279,"src":"893:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1269,"name":"address","nodeType":"ElementaryTypeName","src":"893:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1272,"mutability":"mutable","name":"tokenId","nameLocation":"923:7:3","nodeType":"VariableDeclaration","scope":1279,"src":"915:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"915:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"data","nameLocation":"955:4:3","nodeType":"VariableDeclaration","scope":1279,"src":"940:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1273,"name":"bytes","nodeType":"ElementaryTypeName","src":"940:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"857:108:3"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1279,"src":"984:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1276,"name":"bytes4","nodeType":"ElementaryTypeName","src":"984:6:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"983:8:3"},"scope":1280,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"142:152:3","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1280],"name":"IERC721Receiver","nameLocation":"305:15:3","scope":1281,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":3} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json index 2ebb294..072ccfa 100644 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61123c80620001fd6000396000f3fe6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea26469706673582212203a33c02bd4ef2bf6f7845eca6f82a6920664ae1f11c600380aaa19683c0b6d9964736f6c63430008170033","sourceMap":"222:1058:11:-:0;;;323:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;222:1058:11;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:12;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:12;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:12;;;2571:26;2522:89;-1:-1:-1;;1333:1:12;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:12;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:12;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:12;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:12:o;:::-;222:1058:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea26469706673582212203a33c02bd4ef2bf6f7845eca6f82a6920664ae1f11c600380aaa19683c0b6d9964736f6c63430008170033","sourceMap":"222:1058:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:43;;;;;;;;;;-1:-1:-1;273:43:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;273:43:11;;;;;;;;1561:300:1;;;;;;;;;;-1:-1:-1;1561:300:1;;;;;:::i;:::-;;:::i;2365:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;;;;;-1:-1:-1;3497:154:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:12;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:12;3323:113:1;;;;;;;;;;-1:-1:-1;3323:113:1;;;;;:::i;:::-;;:::i;1181:97:11:-;;;;;;;;;;-1:-1:-1;1250:21:11;1181:97;;;2324:25:12;;;2312:2;2297:18;1181:97:11;2178:177:12;632:363:11;;;;;;;;;;-1:-1:-1;632:363:11;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3335:33:12;;;3317:52;;3305:2;3290:18;632:363:11;3173:202:12;4143:578:1;;;;;;;;;;-1:-1:-1;4143:578:1;;;;;:::i;:::-;;:::i;4787:132::-;;;;;;;;;;-1:-1:-1;4787:132:1;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;;;;;-1:-1:-1;2185:118:1;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;;;;;-1:-1:-1;1920:208:1;;;;;:::i;:::-;;:::i;2518:93::-;;;;;;;;;;;;;:::i;373:206:11:-;;;;;;;;;;-1:-1:-1;373:206:11;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;;;;;-1:-1:-1;3718:144:1;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;;;;;-1:-1:-1;4985:208:1;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;;;;;-1:-1:-1;2677:255:1;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;;;;;-1:-1:-1;3928:153:1;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;632:363:11:-;793:6;834:14;840:7;834:5;:14::i;:::-;-1:-1:-1;;;;632:363:11;;;;;;;:::o;4143:578:1:-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:12;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;6439:15:12;;;4654:50:1;;;6421:34:12;6471:18;;;6464:34;;;6534:15;;6514:18;;;6507:43;6356:18;;4654:50:1;6181:375:12;4606:109:1;4223:498;4143:578;;;:::o;4787:132::-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:12;1652:18;;2048:30:1;1533:203:12;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;373:206:11:-;425:20;;;;:11;:20;;;;;;;;421:73;;;471:12;:7;481:2;471:12;:::i;:::-;461:22;;421:73;504:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;504:27:11;527:4;504:27;;;542:30;552:10;516:7;542:9;:30::i;:::-;373:206;:::o;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2324:25:12;;;2297:18;;16309:31:1;2178:177:12;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;11462:227::-;11513:21;11537:40;11553:1;11557:7;11574:1;11537:7;:40::i;:::-;11513:64;-1:-1:-1;;;;;;11591:27:1;;11587:96;;11641:31;;-1:-1:-1;;;11641:31:1;;;;;2324:25:12;;;2297:18;;11641:31:1;2178:177:12;8838:795:1;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:12;;15743:31:1;;;1679:51:12;1652:18;;15743:31:1;1533:203:12;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::12;;;15855::1;;312:18:12;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:12;;17430:25:1;;;1679:51:12;1652:18;;17430:25:1;1533:203:12;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:12;;17272:25:1;;;1679:51:12;1652:18;;17272:25:1;1533:203:12;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:12;;15189:27:1;;;1679:51:12;1652:18;;15189:27:1;1533:203:12;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2324:25:12;;;2297:18;;7298:31:1;2178:177:12;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8404:32:12;;7375:44:1;;;8386:51:12;8453:18;;;8446:34;;;8359:18;;7375:44:1;8212:274:12;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:12;1652:18;;10061:33:1;1533:203:12;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:12;1652:18;;10234:31:1;1533:203:12;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;391:131::-;-1:-1:-1;;;;;;465:32:12;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:12;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:12;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:12:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:12;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:12:o;2360:808::-;2457:6;2465;2473;2481;2489;2542:3;2530:9;2521:7;2517:23;2513:33;2510:53;;;2559:1;2556;2549:12;2510:53;2582:29;2601:9;2582:29;:::i;:::-;2572:39;;2630:38;2664:2;2653:9;2649:18;2630:38;:::i;:::-;2620:48;;2715:2;2704:9;2700:18;2687:32;2677:42;;2770:2;2759:9;2755:18;2742:32;2793:18;2834:2;2826:6;2823:14;2820:34;;;2850:1;2847;2840:12;2820:34;2888:6;2877:9;2873:22;2863:32;;2933:7;2926:4;2922:2;2918:13;2914:27;2904:55;;2955:1;2952;2945:12;2904:55;2995:2;2982:16;3021:2;3013:6;3010:14;3007:34;;;3037:1;3034;3027:12;3007:34;3082:7;3077:2;3068:6;3064:2;3060:15;3056:24;3053:37;3050:57;;;3103:1;3100;3093:12;3050:57;2360:808;;;;-1:-1:-1;2360:808:12;;-1:-1:-1;3134:2:12;3126:11;;3156:6;2360:808;-1:-1:-1;;;2360:808:12:o;3380:328::-;3457:6;3465;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3565:29;3584:9;3565:29;:::i;:::-;3555:39;;3613:38;3647:2;3636:9;3632:18;3613:38;:::i;:::-;3603:48;;3698:2;3687:9;3683:18;3670:32;3660:42;;3380:328;;;;;:::o;3713:186::-;3772:6;3825:2;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3864:29;3883:9;3864:29;:::i;3904:347::-;3969:6;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4069:29;4088:9;4069:29;:::i;:::-;4059:39;;4148:2;4137:9;4133:18;4120:32;4195:5;4188:13;4181:21;4174:5;4171:32;4161:60;;4217:1;4214;4207:12;4161:60;4240:5;4230:15;;;3904:347;;;;;:::o;4256:127::-;4317:10;4312:3;4308:20;4305:1;4298:31;4348:4;4345:1;4338:15;4372:4;4369:1;4362:15;4388:1138;4483:6;4491;4499;4507;4560:3;4548:9;4539:7;4535:23;4531:33;4528:53;;;4577:1;4574;4567:12;4528:53;4600:29;4619:9;4600:29;:::i;:::-;4590:39;;4648:38;4682:2;4671:9;4667:18;4648:38;:::i;:::-;4638:48;;4733:2;4722:9;4718:18;4705:32;4695:42;;4788:2;4777:9;4773:18;4760:32;4811:18;4852:2;4844:6;4841:14;4838:34;;;4868:1;4865;4858:12;4838:34;4906:6;4895:9;4891:22;4881:32;;4951:7;4944:4;4940:2;4936:13;4932:27;4922:55;;4973:1;4970;4963:12;4922:55;5009:2;4996:16;5031:2;5027;5024:10;5021:36;;;5037:18;;:::i;:::-;5112:2;5106:9;5080:2;5166:13;;-1:-1:-1;;5162:22:12;;;5186:2;5158:31;5154:40;5142:53;;;5210:18;;;5230:22;;;5207:46;5204:72;;;5256:18;;:::i;:::-;5296:10;5292:2;5285:22;5331:2;5323:6;5316:18;5371:7;5366:2;5361;5357;5353:11;5349:20;5346:33;5343:53;;;5392:1;5389;5382:12;5343:53;5448:2;5443;5439;5435:11;5430:2;5422:6;5418:15;5405:46;5493:1;5488:2;5483;5475:6;5471:15;5467:24;5460:35;5514:6;5504:16;;;;;;;4388:1138;;;;;;;:::o;5531:260::-;5599:6;5607;5660:2;5648:9;5639:7;5635:23;5631:32;5628:52;;;5676:1;5673;5666:12;5628:52;5699:29;5718:9;5699:29;:::i;:::-;5689:39;;5747:38;5781:2;5770:9;5766:18;5747:38;:::i;:::-;5737:48;;5531:260;;;;;:::o;5796:380::-;5875:1;5871:12;;;;5918;;;5939:61;;5993:4;5985:6;5981:17;5971:27;;5939:61;6046:2;6038:6;6035:14;6015:18;6012:38;6009:161;;6092:10;6087:3;6083:20;6080:1;6073:31;6127:4;6124:1;6117:15;6155:4;6152:1;6145:15;6009:161;;5796:380;;;:::o;6561:265::-;6634:9;;;6665;;6682:15;;;6676:22;;6662:37;6652:168;;6742:10;6737:3;6733:20;6730:1;6723:31;6777:4;6774:1;6767:15;6805:4;6802:1;6795:15;6831:496;7010:3;7048:6;7042:13;7064:66;7123:6;7118:3;7111:4;7103:6;7099:17;7064:66;:::i;:::-;7193:13;;7152:16;;;;7215:70;7193:13;7152:16;7262:4;7250:17;;7215:70;:::i;:::-;7301:20;;6831:496;-1:-1:-1;;;;6831:496:12:o;7332:489::-;-1:-1:-1;;;;;7601:15:12;;;7583:34;;7653:15;;7648:2;7633:18;;7626:43;7700:2;7685:18;;7678:34;;;7748:3;7743:2;7728:18;;7721:31;;;7526:4;;7769:46;;7795:19;;7787:6;7769:46;:::i;:::-;7761:54;7332:489;-1:-1:-1;;;;;;7332:489:12:o;7826:249::-;7895:6;7948:2;7936:9;7927:7;7923:23;7919:32;7916:52;;;7964:1;7961;7954:12;7916:52;7996:9;7990:16;8015:30;8039:5;8015:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getBalance()":"12065fe0","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","name()":"06fdde03","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b\",\"dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5","urls":["bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b","dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2882,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2881],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:1241:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2792,"nodeType":"ImportDirective","src":"138:82:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1281,"symbolAliases":[],"unitAlias":""},{"id":2881,"nodeType":"ContractDefinition","src":"222:1058:11","nodes":[{"id":2800,"nodeType":"VariableDeclaration","src":"273:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"305:11:11","scope":2881,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2799,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2797,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"273:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2798,"name":"bool","nodeType":"ElementaryTypeName","src":"292:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2808,"nodeType":"FunctionDefinition","src":"323:44:11","nodes":[],"body":{"id":2807,"nodeType":"Block","src":"365:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"344:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"356:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2805,"kind":"baseConstructorSpecifier","modifierName":{"id":2802,"name":"ERC721","nameLocations":["337:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"337:6:11"},"nodeType":"ModifierInvocation","src":"337:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[],"src":"334:2:11"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"365:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2837,"nodeType":"FunctionDefinition","src":"373:206:11","nodes":[],"body":{"id":2836,"nodeType":"Block","src":"411:168:11","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2813,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"425:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2815,"indexExpression":{"id":2814,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"425:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2823,"nodeType":"IfStatement","src":"421:73:11","trueBody":{"id":2822,"nodeType":"Block","src":"447:47:11","statements":[{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2816,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"461:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2817,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"471:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"481:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"471:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"461:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"461:22:11"}]}},{"expression":{"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2824,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"504:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2826,"indexExpression":{"id":2825,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"516:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"504:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"527:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"504:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2829,"nodeType":"ExpressionStatement","src":"504:27:11"},{"expression":{"arguments":[{"expression":{"id":2831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"552:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"556:6:11","memberName":"sender","nodeType":"MemberAccess","src":"552:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2833,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"564:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2830,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"542:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"542:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"542:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"382:4:11","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"tokenId","nameLocation":"395:7:11","nodeType":"VariableDeclaration","scope":2837,"src":"387:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:17:11"},"returnParameters":{"id":2812,"nodeType":"ParameterList","parameters":[],"src":"411:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2860,"nodeType":"FunctionDefinition","src":"632:363:11","nodes":[],"body":{"id":2859,"nodeType":"Block","src":"801:194:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2852,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"840:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2851,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"834:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"834:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2854,"nodeType":"ExpressionStatement","src":"834:14:11"},{"expression":{"expression":{"expression":{"id":2855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"958:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"963:16:11","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2860,"src":"958:21:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"980:8:11","memberName":"selector","nodeType":"MemberAccess","src":"958:30:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2850,"id":2858,"nodeType":"Return","src":"951:37:11"}]},"baseFunctions":[1279],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"641:16:11","overrides":{"id":2847,"nodeType":"OverrideSpecifier","overrides":[],"src":"775:8:11"},"parameters":{"id":2846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2839,"mutability":"mutable","name":"operator","nameLocation":"675:8:11","nodeType":"VariableDeclaration","scope":2860,"src":"667:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2838,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"from","nameLocation":"701:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"693:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2840,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2843,"mutability":"mutable","name":"tokenId","nameLocation":"723:7:11","nodeType":"VariableDeclaration","scope":2860,"src":"715:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2845,"mutability":"mutable","name":"data","nameLocation":"755:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"740:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2844,"name":"bytes","nodeType":"ElementaryTypeName","src":"740:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"657:108:11"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2860,"src":"793:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2848,"name":"bytes4","nodeType":"ElementaryTypeName","src":"793:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"792:8:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2864,"nodeType":"FunctionDefinition","src":"1026:30:11","nodes":[],"body":{"id":2863,"nodeType":"Block","src":"1054:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2861,"nodeType":"ParameterList","parameters":[],"src":"1034:2:11"},"returnParameters":{"id":2862,"nodeType":"ParameterList","parameters":[],"src":"1054:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2868,"nodeType":"FunctionDefinition","src":"1095:29:11","nodes":[],"body":{"id":2867,"nodeType":"Block","src":"1122:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"1102:2:11"},"returnParameters":{"id":2866,"nodeType":"ParameterList","parameters":[],"src":"1122:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2880,"nodeType":"FunctionDefinition","src":"1181:97:11","nodes":[],"body":{"id":2879,"nodeType":"Block","src":"1233:45:11","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1258:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}],"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1250:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2873,"name":"address","nodeType":"ElementaryTypeName","src":"1250:7:11","typeDescriptions":{}}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1264:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1250:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2872,"id":2878,"nodeType":"Return","src":"1243:28:11"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"1190:10:11","parameters":{"id":2869,"nodeType":"ParameterList","parameters":[],"src":"1200:2:11"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"1224:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1223:9:11"},"scope":2881,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2793,"name":"ERC721","nameLocations":["243:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"243:6:11"},"id":2794,"nodeType":"InheritanceSpecifier","src":"243:6:11"},{"baseName":{"id":2795,"name":"IERC721Receiver","nameLocations":["251:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":1280,"src":"251:15:11"},"id":2796,"nodeType":"InheritanceSpecifier","src":"251:15:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2881,1280,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"231:8:11","scope":2882,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61123c80620001fd6000396000f3fe6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea2646970667358221220509fc980a219d59bc05de9640913a1e3758252fb2552bd0dea8711d66002e65d64736f6c63430008180033","sourceMap":"222:1058:11:-:0;;;323:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;222:1058:11;;14:127:13;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:13;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:13;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:13;;;2571:26;2522:89;-1:-1:-1;;1333:1:13;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:13;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:13;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:13;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:13:o;:::-;222:1058:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea2646970667358221220509fc980a219d59bc05de9640913a1e3758252fb2552bd0dea8711d66002e65d64736f6c63430008180033","sourceMap":"222:1058:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:43;;;;;;;;;;-1:-1:-1;273:43:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:13;;357:22;339:41;;327:2;312:18;273:43:11;;;;;;;;1561:300:1;;;;;;;;;;-1:-1:-1;1561:300:1;;;;;:::i;:::-;;:::i;2365:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;;;;;-1:-1:-1;3497:154:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:13;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:13;3323:113:1;;;;;;;;;;-1:-1:-1;3323:113:1;;;;;:::i;:::-;;:::i;1181:97:11:-;;;;;;;;;;-1:-1:-1;1250:21:11;1181:97;;;2324:25:13;;;2312:2;2297:18;1181:97:11;2178:177:13;632:363:11;;;;;;;;;;-1:-1:-1;632:363:11;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3335:33:13;;;3317:52;;3305:2;3290:18;632:363:11;3173:202:13;4143:578:1;;;;;;;;;;-1:-1:-1;4143:578:1;;;;;:::i;:::-;;:::i;4787:132::-;;;;;;;;;;-1:-1:-1;4787:132:1;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;;;;;-1:-1:-1;2185:118:1;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;;;;;-1:-1:-1;1920:208:1;;;;;:::i;:::-;;:::i;2518:93::-;;;;;;;;;;;;;:::i;373:206:11:-;;;;;;;;;;-1:-1:-1;373:206:11;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;;;;;-1:-1:-1;3718:144:1;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;;;;;-1:-1:-1;4985:208:1;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;;;;;-1:-1:-1;2677:255:1;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;;;;;-1:-1:-1;3928:153:1;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;632:363:11:-;793:6;834:14;840:7;834:5;:14::i;:::-;-1:-1:-1;;;;632:363:11;;;;;;;:::o;4143:578:1:-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:13;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;6439:15:13;;;4654:50:1;;;6421:34:13;6471:18;;;6464:34;;;6534:15;;6514:18;;;6507:43;6356:18;;4654:50:1;6181:375:13;4606:109:1;4223:498;4143:578;;;:::o;4787:132::-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:13;1652:18;;2048:30:1;1533:203:13;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;373:206:11:-;425:20;;;;:11;:20;;;;;;;;421:73;;;471:12;:7;481:2;471:12;:::i;:::-;461:22;;421:73;504:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;504:27:11;527:4;504:27;;;542:30;552:10;516:7;542:9;:30::i;:::-;373:206;:::o;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2324:25:13;;;2297:18;;16309:31:1;2178:177:13;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;11462:227::-;11513:21;11537:40;11553:1;11557:7;11574:1;11537:7;:40::i;:::-;11513:64;-1:-1:-1;;;;;;11591:27:1;;11587:96;;11641:31;;-1:-1:-1;;;11641:31:1;;;;;2324:25:13;;;2297:18;;11641:31:1;2178:177:13;8838:795:1;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:13;;15743:31:1;;;1679:51:13;1652:18;;15743:31:1;1533:203:13;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::13;;;15855::1;;312:18:13;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:13;;17430:25:1;;;1679:51:13;1652:18;;17430:25:1;1533:203:13;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:13;;17272:25:1;;;1679:51:13;1652:18;;17272:25:1;1533:203:13;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:13;;15189:27:1;;;1679:51:13;1652:18;;15189:27:1;1533:203:13;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2324:25:13;;;2297:18;;7298:31:1;2178:177:13;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8404:32:13;;7375:44:1;;;8386:51:13;8453:18;;;8446:34;;;8359:18;;7375:44:1;8212:274:13;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:13;1652:18;;10061:33:1;1533:203:13;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:13;1652:18;;10234:31:1;1533:203:13;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:13;;14:180;-1:-1:-1;14:180:13:o;391:131::-;-1:-1:-1;;;;;;465:32:13;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:13;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:13;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:13:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:13;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:13:o;2360:808::-;2457:6;2465;2473;2481;2489;2542:3;2530:9;2521:7;2517:23;2513:33;2510:53;;;2559:1;2556;2549:12;2510:53;2582:29;2601:9;2582:29;:::i;:::-;2572:39;;2630:38;2664:2;2653:9;2649:18;2630:38;:::i;:::-;2620:48;;2715:2;2704:9;2700:18;2687:32;2677:42;;2770:2;2759:9;2755:18;2742:32;2793:18;2834:2;2826:6;2823:14;2820:34;;;2850:1;2847;2840:12;2820:34;2888:6;2877:9;2873:22;2863:32;;2933:7;2926:4;2922:2;2918:13;2914:27;2904:55;;2955:1;2952;2945:12;2904:55;2995:2;2982:16;3021:2;3013:6;3010:14;3007:34;;;3037:1;3034;3027:12;3007:34;3082:7;3077:2;3068:6;3064:2;3060:15;3056:24;3053:37;3050:57;;;3103:1;3100;3093:12;3050:57;2360:808;;;;-1:-1:-1;2360:808:13;;-1:-1:-1;3134:2:13;3126:11;;3156:6;2360:808;-1:-1:-1;;;2360:808:13:o;3380:328::-;3457:6;3465;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3565:29;3584:9;3565:29;:::i;:::-;3555:39;;3613:38;3647:2;3636:9;3632:18;3613:38;:::i;:::-;3603:48;;3698:2;3687:9;3683:18;3670:32;3660:42;;3380:328;;;;;:::o;3713:186::-;3772:6;3825:2;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3864:29;3883:9;3864:29;:::i;3904:347::-;3969:6;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4069:29;4088:9;4069:29;:::i;:::-;4059:39;;4148:2;4137:9;4133:18;4120:32;4195:5;4188:13;4181:21;4174:5;4171:32;4161:60;;4217:1;4214;4207:12;4161:60;4240:5;4230:15;;;3904:347;;;;;:::o;4256:127::-;4317:10;4312:3;4308:20;4305:1;4298:31;4348:4;4345:1;4338:15;4372:4;4369:1;4362:15;4388:1138;4483:6;4491;4499;4507;4560:3;4548:9;4539:7;4535:23;4531:33;4528:53;;;4577:1;4574;4567:12;4528:53;4600:29;4619:9;4600:29;:::i;:::-;4590:39;;4648:38;4682:2;4671:9;4667:18;4648:38;:::i;:::-;4638:48;;4733:2;4722:9;4718:18;4705:32;4695:42;;4788:2;4777:9;4773:18;4760:32;4811:18;4852:2;4844:6;4841:14;4838:34;;;4868:1;4865;4858:12;4838:34;4906:6;4895:9;4891:22;4881:32;;4951:7;4944:4;4940:2;4936:13;4932:27;4922:55;;4973:1;4970;4963:12;4922:55;5009:2;4996:16;5031:2;5027;5024:10;5021:36;;;5037:18;;:::i;:::-;5112:2;5106:9;5080:2;5166:13;;-1:-1:-1;;5162:22:13;;;5186:2;5158:31;5154:40;5142:53;;;5210:18;;;5230:22;;;5207:46;5204:72;;;5256:18;;:::i;:::-;5296:10;5292:2;5285:22;5331:2;5323:6;5316:18;5371:7;5366:2;5361;5357;5353:11;5349:20;5346:33;5343:53;;;5392:1;5389;5382:12;5343:53;5448:2;5443;5439;5435:11;5430:2;5422:6;5418:15;5405:46;5493:1;5488:2;5483;5475:6;5471:15;5467:24;5460:35;5514:6;5504:16;;;;;;;4388:1138;;;;;;;:::o;5531:260::-;5599:6;5607;5660:2;5648:9;5639:7;5635:23;5631:32;5628:52;;;5676:1;5673;5666:12;5628:52;5699:29;5718:9;5699:29;:::i;:::-;5689:39;;5747:38;5781:2;5770:9;5766:18;5747:38;:::i;:::-;5737:48;;5531:260;;;;;:::o;5796:380::-;5875:1;5871:12;;;;5918;;;5939:61;;5993:4;5985:6;5981:17;5971:27;;5939:61;6046:2;6038:6;6035:14;6015:18;6012:38;6009:161;;6092:10;6087:3;6083:20;6080:1;6073:31;6127:4;6124:1;6117:15;6155:4;6152:1;6145:15;6009:161;;5796:380;;;:::o;6561:265::-;6634:9;;;6665;;6682:15;;;6676:22;;6662:37;6652:168;;6742:10;6737:3;6733:20;6730:1;6723:31;6777:4;6774:1;6767:15;6805:4;6802:1;6795:15;6831:496;7010:3;7048:6;7042:13;7064:66;7123:6;7118:3;7111:4;7103:6;7099:17;7064:66;:::i;:::-;7193:13;;7152:16;;;;7215:70;7193:13;7152:16;7262:4;7250:17;;7215:70;:::i;:::-;7301:20;;6831:496;-1:-1:-1;;;;6831:496:13:o;7332:489::-;-1:-1:-1;;;;;7601:15:13;;;7583:34;;7653:15;;7648:2;7633:18;;7626:43;7700:2;7685:18;;7678:34;;;7748:3;7743:2;7728:18;;7721:31;;;7526:4;;7769:46;;7795:19;;7787:6;7769:46;:::i;:::-;7761:54;7332:489;-1:-1:-1;;;;;;7332:489:13:o;7826:249::-;7895:6;7948:2;7936:9;7927:7;7923:23;7919:32;7916:52;;;7964:1;7961;7954:12;7916:52;7996:9;7990:16;8015:30;8039:5;8015:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getBalance()":"12065fe0","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","name()":"06fdde03","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b\",\"dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5","urls":["bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b","dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2882,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2881],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:1241:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2792,"nodeType":"ImportDirective","src":"138:82:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1281,"symbolAliases":[],"unitAlias":""},{"id":2881,"nodeType":"ContractDefinition","src":"222:1058:11","nodes":[{"id":2800,"nodeType":"VariableDeclaration","src":"273:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"305:11:11","scope":2881,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2799,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2797,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"273:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2798,"name":"bool","nodeType":"ElementaryTypeName","src":"292:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2808,"nodeType":"FunctionDefinition","src":"323:44:11","nodes":[],"body":{"id":2807,"nodeType":"Block","src":"365:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"344:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"356:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2805,"kind":"baseConstructorSpecifier","modifierName":{"id":2802,"name":"ERC721","nameLocations":["337:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"337:6:11"},"nodeType":"ModifierInvocation","src":"337:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[],"src":"334:2:11"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"365:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2837,"nodeType":"FunctionDefinition","src":"373:206:11","nodes":[],"body":{"id":2836,"nodeType":"Block","src":"411:168:11","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2813,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"425:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2815,"indexExpression":{"id":2814,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"425:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2823,"nodeType":"IfStatement","src":"421:73:11","trueBody":{"id":2822,"nodeType":"Block","src":"447:47:11","statements":[{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2816,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"461:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2817,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"471:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"481:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"471:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"461:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"461:22:11"}]}},{"expression":{"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2824,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"504:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2826,"indexExpression":{"id":2825,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"516:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"504:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"527:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"504:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2829,"nodeType":"ExpressionStatement","src":"504:27:11"},{"expression":{"arguments":[{"expression":{"id":2831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"552:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"556:6:11","memberName":"sender","nodeType":"MemberAccess","src":"552:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2833,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"564:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2830,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"542:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"542:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"542:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"382:4:11","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"tokenId","nameLocation":"395:7:11","nodeType":"VariableDeclaration","scope":2837,"src":"387:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:17:11"},"returnParameters":{"id":2812,"nodeType":"ParameterList","parameters":[],"src":"411:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2860,"nodeType":"FunctionDefinition","src":"632:363:11","nodes":[],"body":{"id":2859,"nodeType":"Block","src":"801:194:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2852,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"840:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2851,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"834:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"834:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2854,"nodeType":"ExpressionStatement","src":"834:14:11"},{"expression":{"expression":{"expression":{"id":2855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"958:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"963:16:11","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2860,"src":"958:21:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"980:8:11","memberName":"selector","nodeType":"MemberAccess","src":"958:30:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2850,"id":2858,"nodeType":"Return","src":"951:37:11"}]},"baseFunctions":[1279],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"641:16:11","overrides":{"id":2847,"nodeType":"OverrideSpecifier","overrides":[],"src":"775:8:11"},"parameters":{"id":2846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2839,"mutability":"mutable","name":"operator","nameLocation":"675:8:11","nodeType":"VariableDeclaration","scope":2860,"src":"667:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2838,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"from","nameLocation":"701:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"693:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2840,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2843,"mutability":"mutable","name":"tokenId","nameLocation":"723:7:11","nodeType":"VariableDeclaration","scope":2860,"src":"715:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2845,"mutability":"mutable","name":"data","nameLocation":"755:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"740:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2844,"name":"bytes","nodeType":"ElementaryTypeName","src":"740:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"657:108:11"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2860,"src":"793:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2848,"name":"bytes4","nodeType":"ElementaryTypeName","src":"793:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"792:8:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2864,"nodeType":"FunctionDefinition","src":"1026:30:11","nodes":[],"body":{"id":2863,"nodeType":"Block","src":"1054:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2861,"nodeType":"ParameterList","parameters":[],"src":"1034:2:11"},"returnParameters":{"id":2862,"nodeType":"ParameterList","parameters":[],"src":"1054:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2868,"nodeType":"FunctionDefinition","src":"1095:29:11","nodes":[],"body":{"id":2867,"nodeType":"Block","src":"1122:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"1102:2:11"},"returnParameters":{"id":2866,"nodeType":"ParameterList","parameters":[],"src":"1122:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2880,"nodeType":"FunctionDefinition","src":"1181:97:11","nodes":[],"body":{"id":2879,"nodeType":"Block","src":"1233:45:11","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1258:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}],"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1250:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2873,"name":"address","nodeType":"ElementaryTypeName","src":"1250:7:11","typeDescriptions":{}}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1264:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1250:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2872,"id":2878,"nodeType":"Return","src":"1243:28:11"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"1190:10:11","parameters":{"id":2869,"nodeType":"ParameterList","parameters":[],"src":"1200:2:11"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"1224:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1223:9:11"},"scope":2881,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2793,"name":"ERC721","nameLocations":["243:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"243:6:11"},"id":2794,"nodeType":"InheritanceSpecifier","src":"243:6:11"},{"baseName":{"id":2795,"name":"IERC721Receiver","nameLocations":["251:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":1280,"src":"251:15:11"},"id":2796,"nodeType":"InheritanceSpecifier","src":"251:15:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2881,1280,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"231:8:11","scope":2882,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json new file mode 100644 index 0000000..fafc9af --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json new file mode 100644 index 0000000..0ed55cf --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json new file mode 100644 index 0000000..187963d --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"ERC721"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json new file mode 100644 index 0000000..1f45b73 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC1155Errors"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json new file mode 100644 index 0000000..891983d --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json new file mode 100644 index 0000000..f44c46b --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC20Errors"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json new file mode 100644 index 0000000..18ec723 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json new file mode 100644 index 0000000..43ed05e --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721Errors"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json new file mode 100644 index 0000000..46f94cc --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json new file mode 100644 index 0000000..1757c87 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721Receiver"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json new file mode 100644 index 0000000..4d0fed2 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"sendTo","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61125f80620001fd6000396000f3fe6080604052600436106100f55760003560e01c806342842e0e1161008f57806395d89b411161006157806395d89b41146102d3578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806394bf804d146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd3565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd3565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd3565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506100fc6102ce366004610fbd565b6105a4565b3480156102df57600080fd5b506101786105ec565b3480156102f457600080fd5b506100fc610303366004610fe9565b6105fb565b34801561031457600080fd5b506100fc61032336600461103b565b610606565b34801561033457600080fd5b50610178610343366004610dd3565b61061d565b34801561035457600080fd5b5061012e610363366004611117565b610692565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c990611141565b80601f01602080910402602001604051908101604052809291908181526020018280546103f590611141565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c0565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106f9565b5050565b600061048f84610706565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610741565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610606565b505050565b60006103b4826106c0565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b60008281526006602052604090205460ff16156105c9576105c682600a61117b565b91505b6000828152600660205260409020805460ff19166001179055610480818361083a565b6060600180546103c990611141565b610480338383610854565b6106118484846104a1565b61052b848484846108f3565b6060610628826106c0565b50600061064060408051602081019091526000815290565b90506000815111610660576040518060200160405280600081525061068b565b8061066a84610a1c565b60405160200161067b9291906111a0565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610aaf565b60006107156000836000610741565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561076e5761076e818486610bb5565b6001600160a01b038116156107ac5761078b600085600080610aaf565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107db576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c19565b6001600160a01b03821661088657604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109359033908890879087906004016111cf565b6020604051808303816000875af1925050508015610970575060408051601f3d908101601f1916820190925261096d9181019061120c565b60015b6109d9573d80801561099e576040519150601f19603f3d011682016040523d82523d6000602084013e6109a3565b606091505b5080516000036109d157604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1557604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2983610c30565b600101905060008167ffffffffffffffff811115610a4957610a49611025565b6040519080825280601f01601f191660200182016040528015610a73576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a7d57509392505050565b8080610ac357506001600160a01b03821615155b15610b85576000610ad3846106c0565b90506001600160a01b03831615801590610aff5750826001600160a01b0316816001600160a01b031614155b8015610b125750610b108184610692565b155b15610b3b5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b835783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc0838383610d08565b61054c576001600160a01b038316610bee57604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c238383610d6e565b61054c60008484846108f3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c6f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cb957662386f26fc10000830492506010015b6305f5e1008310610cd1576305f5e100830492506008015b6127108310610ce557612710830492506004015b60648310610cf7576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d665750826001600160a01b0316846001600160a01b03161480610d425750610d428484610692565b80610d6657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9857604051633250574960e11b8152600060048201526024016104c7565b6000610da683836000610741565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de557600080fd5b5035919050565b6001600160e01b031981168114610e0257600080fd5b50565b600060208284031215610e1757600080fd5b813561068b81610dec565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068b6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068b82610e85565b60008060408385031215610fd057600080fd5b82359150610fe060208401610e85565b90509250929050565b60008060408385031215610ffc57600080fd5b61100583610e85565b91506020830135801515811461101a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561105157600080fd5b61105a85610e85565b935061106860208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561108c57600080fd5b818701915087601f8301126110a057600080fd5b8135818111156110b2576110b2611025565b604051601f8201601f19908116603f011681019083821181831017156110da576110da611025565b816040528281528a60208487010111156110f357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561112a57600080fd5b61113383610e85565b9150610fe060208401610e85565b600181811c9082168061115557607f821691505b60208210810361117557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b600083516111b2818460208801610e22565b8351908301906111c6818360208801610e22565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061120290830184610e46565b9695505050505050565b60006020828403121561121e57600080fd5b815161068b81610dec56fea2646970667358221220acd60fa32deecc24ab34e4a514e9931499528421959d8a4040b87bccb36f799d64736f6c63430008180033","sourceMap":"52951:1070:0:-:0;;;53052:44;;;;;;;;;;36577:113;;;;;;;;;;;;;-1:-1:-1;;;36577:113:0;;;;;;;;;;;;;;;;-1:-1:-1;;;36577:113:0;;;36651:5;36643;:13;;;;;;:::i;:::-;-1:-1:-1;36666:7:0;:17;36676:7;36666;:17;:::i;:::-;;36577:113;;52951:1070;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:1;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:1;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:1;;;2571:26;2522:89;-1:-1:-1;;1333:1:1;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:1;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:1;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:1;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:1:o;:::-;52951:1070:0;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f55760003560e01c806342842e0e1161008f57806395d89b411161006157806395d89b41146102d3578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806394bf804d146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd3565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd3565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd3565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506100fc6102ce366004610fbd565b6105a4565b3480156102df57600080fd5b506101786105ec565b3480156102f457600080fd5b506100fc610303366004610fe9565b6105fb565b34801561031457600080fd5b506100fc61032336600461103b565b610606565b34801561033457600080fd5b50610178610343366004610dd3565b61061d565b34801561035457600080fd5b5061012e610363366004611117565b610692565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c990611141565b80601f01602080910402602001604051908101604052809291908181526020018280546103f590611141565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c0565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106f9565b5050565b600061048f84610706565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610741565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610606565b505050565b60006103b4826106c0565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b60008281526006602052604090205460ff16156105c9576105c682600a61117b565b91505b6000828152600660205260409020805460ff19166001179055610480818361083a565b6060600180546103c990611141565b610480338383610854565b6106118484846104a1565b61052b848484846108f3565b6060610628826106c0565b50600061064060408051602081019091526000815290565b90506000815111610660576040518060200160405280600081525061068b565b8061066a84610a1c565b60405160200161067b9291906111a0565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610aaf565b60006107156000836000610741565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561076e5761076e818486610bb5565b6001600160a01b038116156107ac5761078b600085600080610aaf565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107db576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c19565b6001600160a01b03821661088657604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109359033908890879087906004016111cf565b6020604051808303816000875af1925050508015610970575060408051601f3d908101601f1916820190925261096d9181019061120c565b60015b6109d9573d80801561099e576040519150601f19603f3d011682016040523d82523d6000602084013e6109a3565b606091505b5080516000036109d157604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1557604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2983610c30565b600101905060008167ffffffffffffffff811115610a4957610a49611025565b6040519080825280601f01601f191660200182016040528015610a73576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a7d57509392505050565b8080610ac357506001600160a01b03821615155b15610b85576000610ad3846106c0565b90506001600160a01b03831615801590610aff5750826001600160a01b0316816001600160a01b031614155b8015610b125750610b108184610692565b155b15610b3b5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b835783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc0838383610d08565b61054c576001600160a01b038316610bee57604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c238383610d6e565b61054c60008484846108f3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c6f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cb957662386f26fc10000830492506010015b6305f5e1008310610cd1576305f5e100830492506008015b6127108310610ce557612710830492506004015b60648310610cf7576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d665750826001600160a01b0316846001600160a01b03161480610d425750610d428484610692565b80610d6657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9857604051633250574960e11b8152600060048201526024016104c7565b6000610da683836000610741565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de557600080fd5b5035919050565b6001600160e01b031981168114610e0257600080fd5b50565b600060208284031215610e1757600080fd5b813561068b81610dec565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068b6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068b82610e85565b60008060408385031215610fd057600080fd5b82359150610fe060208401610e85565b90509250929050565b60008060408385031215610ffc57600080fd5b61100583610e85565b91506020830135801515811461101a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561105157600080fd5b61105a85610e85565b935061106860208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561108c57600080fd5b818701915087601f8301126110a057600080fd5b8135818111156110b2576110b2611025565b604051601f8201601f19908116603f011681019083821181831017156110da576110da611025565b816040528281528a60208487010111156110f357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561112a57600080fd5b61113383610e85565b9150610fe060208401610e85565b600181811c9082168061115557607f821691505b60208210810361117557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b600083516111b2818460208801610e22565b8351908301906111c6818360208801610e22565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061120290830184610e46565b9695505050505050565b60006020828403121561121e57600080fd5b815161068b81610dec56fea2646970667358221220acd60fa32deecc24ab34e4a514e9931499528421959d8a4040b87bccb36f799d64736f6c63430008180033","sourceMap":"52951:1070:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53002:43;;;;;;;;;;-1:-1:-1;53002:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:1;;357:22;339:41;;327:2;312:18;53002:43:0;;;;;;;;36757:300;;;;;;;;;;-1:-1:-1;36757:300:0;;;;;:::i;:::-;;:::i;37561:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;38693:154::-;;;;;;;;;;-1:-1:-1;38693:154:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:1;;;1679:51;;1667:2;1652:18;38693:154:0;1533:203:1;38519:113:0;;;;;;;;;;-1:-1:-1;38519:113:0;;;;;:::i;:::-;;:::i;53922:97::-;;;;;;;;;;-1:-1:-1;53991:21:0;53922:97;;;2324:25:1;;;2312:2;2297:18;53922:97:0;2178:177:1;53373:363:0;;;;;;;;;;-1:-1:-1;53373:363:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3335:33:1;;;3317:52;;3305:2;3290:18;53373:363:0;3173:202:1;39339:578:0;;;;;;;;;;-1:-1:-1;39339:578:0;;;;;:::i;:::-;;:::i;39983:132::-;;;;;;;;;;-1:-1:-1;39983:132:0;;;;;:::i;:::-;;:::i;37381:118::-;;;;;;;;;;-1:-1:-1;37381:118:0;;;;;:::i;:::-;;:::i;37116:208::-;;;;;;;;;;-1:-1:-1;37116:208:0;;;;;:::i;:::-;;:::i;53102:218::-;;;;;;;;;;-1:-1:-1;53102:218:0;;;;;:::i;:::-;;:::i;37714:93::-;;;;;;;;;;;;;:::i;38914:144::-;;;;;;;;;;-1:-1:-1;38914:144:0;;;;;:::i;:::-;;:::i;40181:208::-;;;;;;;;;;-1:-1:-1;40181:208:0;;;;;:::i;:::-;;:::i;37873:255::-;;;;;;;;;;-1:-1:-1;37873:255:0;;;;;:::i;:::-;;:::i;39124:153::-;;;;;;;;;;-1:-1:-1;39124:153:0;;;;;:::i;:::-;;:::i;36757:300::-;36859:4;-1:-1:-1;;;;;;36894:40:0;;-1:-1:-1;;;36894:40:0;;:104;;-1:-1:-1;;;;;;;36950:48:0;;-1:-1:-1;;;36950:48:0;36894:104;:156;;;-1:-1:-1;;;;;;;;;;29815:40:0;;;37014:36;36875:175;36757:300;-1:-1:-1;;36757:300:0:o;37561:89::-;37606:13;37638:5;37631:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37561:89;:::o;38693:154::-;38760:7;38779:22;38793:7;38779:13;:22::i;:::-;-1:-1:-1;41204:7:0;41230:24;;;:15;:24;;;;;;-1:-1:-1;;;;;41230:24:0;38819:21;41134:127;38519:113;38590:35;38599:2;38603:7;26793:10;38590:8;:35::i;:::-;38519:113;;:::o;53373:363::-;53534:6;53575:14;53581:7;53575:5;:14::i;:::-;-1:-1:-1;;;;53373:363:0;;;;;;;:::o;39339:578::-;-1:-1:-1;;;;;39433:16:0;;39429:87;;39472:33;;-1:-1:-1;;;39472:33:0;;39502:1;39472:33;;;1679:51:1;1652:18;;39472:33:0;;;;;;;;39429:87;39734:21;39758:34;39766:2;39770:7;26793:10;39758:7;:34::i;:::-;39734:58;;39823:4;-1:-1:-1;;;;;39806:21:0;:13;-1:-1:-1;;;;;39806:21:0;;39802:109;;39850:50;;-1:-1:-1;;;39850:50:0;;-1:-1:-1;;;;;6698:15:1;;;39850:50:0;;;6680:34:1;6730:18;;;6723:34;;;6793:15;;6773:18;;;6766:43;6615:18;;39850:50:0;6440:375:1;39802:109:0;39419:498;39339:578;;;:::o;39983:132::-;40069:39;40086:4;40092:2;40096:7;40069:39;;;;;;;;;;;;:16;:39::i;:::-;39983:132;;;:::o;37381:118::-;37444:7;37470:22;37484:7;37470:13;:22::i;37116:208::-;37179:7;-1:-1:-1;;;;;37202:19:0;;37198:87;;37244:30;;-1:-1:-1;;;37244:30:0;;37271:1;37244:30;;;1679:51:1;1652:18;;37244:30:0;1533:203:1;37198:87:0;-1:-1:-1;;;;;;37301:16:0;;;;;:9;:16;;;;;;;37116:208::o;53102:218::-;53170:20;;;;:11;:20;;;;;;;;53166:73;;;53216:12;:7;53226:2;53216:12;:::i;:::-;53206:22;;53166:73;53249:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;53249:27:0;53272:4;53249:27;;;53287:26;53297:6;53261:7;53287:9;:26::i;37714:93::-;37761:13;37793:7;37786:14;;;;;:::i;38914:144::-;38999:52;26793:10;39032:8;39042;38999:18;:52::i;40181:208::-;40294:31;40307:4;40313:2;40317:7;40294:12;:31::i;:::-;40335:47;40358:4;40364:2;40368:7;40377:4;40335:22;:47::i;37873:255::-;37937:13;37962:22;37976:7;37962:13;:22::i;:::-;;37995:21;38019:10;38446:9;;;;;;;;;-1:-1:-1;38446:9:0;;;38370:92;38019:10;37995:34;;38070:1;38052:7;38046:21;:25;:75;;;;;;;;;;;;;;;;;38088:7;38097:18;:7;:16;:18::i;:::-;38074:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;38046:75;38039:82;37873:255;-1:-1:-1;;;37873:255:0:o;39124:153::-;-1:-1:-1;;;;;39235:25:0;;;39212:4;39235:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;39124:153::o;51334:241::-;51397:7;40995:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40995:16:0;;51459:88;;51505:31;;-1:-1:-1;;;51505:31:0;;;;;2324:25:1;;;2297:18;;51505:31:0;2178:177:1;49614:120:0;49694:33;49703:2;49707:7;49716:4;49722;49694:8;:33::i;46658:227::-;46709:21;46733:40;46749:1;46753:7;46770:1;46733:7;:40::i;:::-;46709:64;-1:-1:-1;;;;;;46787:27:0;;46783:96;;46837:31;;-1:-1:-1;;;46837:31:0;;;;;2324:25:1;;;2297:18;;46837:31:0;2178:177:1;44034:795:0;44120:7;40995:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40995:16:0;;;;44231:18;;;44227:86;;44265:37;44282:4;44288;44294:7;44265:16;:37::i;:::-;-1:-1:-1;;;;;44357:18:0;;;44353:256;;44473:48;44490:1;44494:7;44511:1;44515:5;44473:8;:48::i;:::-;-1:-1:-1;;;;;44564:15:0;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;44564:20:0;;;44353:256;-1:-1:-1;;;;;44623:16:0;;;44619:107;;-1:-1:-1;;;;;44683:13:0;;;;;;:9;:13;;;;;:18;;44700:1;44683:18;;;44619:107;44736:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;44736:21:0;-1:-1:-1;;;;;44736:21:0;;;;;;;;;44773:27;;44736:16;;44773:27;;;;;;;44818:4;44034:795;-1:-1:-1;;;;44034:795:0:o;45829:100::-;45896:26;45906:2;45910:7;45896:26;;;;;;;;;;;;:9;:26::i;50787:312::-;-1:-1:-1;;;;;50894:22:0;;50890:91;;50939:31;;-1:-1:-1;;;50939:31:0;;-1:-1:-1;;;;;1697:32:1;;50939:31:0;;;1679:51:1;1652:18;;50939:31:0;1533:203:1;50890:91:0;-1:-1:-1;;;;;50990:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;50990:46:0;;;;;;;;;;51051:41;;339::1;;;51051::0;;312:18:1;51051:41:0;;;;;;;50787:312;;;:::o;52114:782::-;-1:-1:-1;;;;;52230:14:0;;;:18;52226:664;;52268:71;;-1:-1:-1;;;52268:71:0;;-1:-1:-1;;;;;52268:36:0;;;;;:71;;26793:10;;52319:4;;52325:7;;52334:4;;52268:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52268:71:0;;;;;;;;-1:-1:-1;;52268:71:0;;;;;;;;;;;;:::i;:::-;;;52264:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52577:6;:13;52594:1;52577:18;52573:293;;52626:25;;-1:-1:-1;;;52626:25:0;;-1:-1:-1;;;;;1697:32:1;;52626:25:0;;;1679:51:1;1652:18;;52626:25:0;1533:203:1;52573:293:0;52818:6;52812:13;52803:6;52799:2;52795:15;52788:38;52264:616;-1:-1:-1;;;;;;52386:51:0;;-1:-1:-1;;;52386:51:0;52382:130;;52468:25;;-1:-1:-1;;;52468:25:0;;-1:-1:-1;;;;;1697:32:1;;52468:25:0;;;1679:51:1;1652:18;;52468:25:0;1533:203:1;52382:130:0;52340:186;52114:782;;;;:::o;23574:698::-;23630:13;23679:14;23696:17;23707:5;23696:10;:17::i;:::-;23716:1;23696:21;23679:38;;23731:20;23765:6;23754:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23754:18:0;-1:-1:-1;23731:41:0;-1:-1:-1;23892:28:0;;;23908:2;23892:28;23947:282;-1:-1:-1;;23978:5:0;-1:-1:-1;;;24112:2:0;24101:14;;24096:32;23978:5;24083:46;24173:2;24164:11;;;-1:-1:-1;24193:21:0;23947:282;24193:21;-1:-1:-1;24249:6:0;23574:698;-1:-1:-1;;;23574:698:0:o;49916:662::-;50076:9;:31;;;-1:-1:-1;;;;;;50089:18:0;;;;50076:31;50072:460;;;50123:13;50139:22;50153:7;50139:13;:22::i;:::-;50123:38;-1:-1:-1;;;;;;50289:18:0;;;;;;:35;;;50320:4;-1:-1:-1;;;;;50311:13:0;:5;-1:-1:-1;;;;;50311:13:0;;;50289:35;:69;;;;;50329:29;50346:5;50353:4;50329:16;:29::i;:::-;50328:30;50289:69;50285:142;;;50385:27;;-1:-1:-1;;;50385:27:0;;-1:-1:-1;;;;;1697:32:1;;50385:27:0;;;1679:51:1;1652:18;;50385:27:0;1533:203:1;50285:142:0;50445:9;50441:81;;;50499:7;50495:2;-1:-1:-1;;;;;50479:28:0;50488:5;-1:-1:-1;;;;;50479:28:0;;;;;;;;;;;50441:81;50109:423;50072:460;-1:-1:-1;;50542:24:0;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;50542:29:0;-1:-1:-1;;;;;50542:29:0;;;;;;;;;;49916:662::o;42278:368::-;42390:38;42404:5;42411:7;42420;42390:13;:38::i;:::-;42385:255;;-1:-1:-1;;;;;42448:19:0;;42444:186;;42494:31;;-1:-1:-1;;;42494:31:0;;;;;2324:25:1;;;2297:18;;42494:31:0;2178:177:1;42444:186:0;42571:44;;-1:-1:-1;;;42571:44:0;;-1:-1:-1;;;;;8663:32:1;;42571:44:0;;;8645:51:1;8712:18;;;8705:34;;;8618:18;;42571:44:0;8471:274:1;46150:182:0;46244:18;46250:2;46254:7;46244:5;:18::i;:::-;46272:53;46303:1;46307:2;46311:7;46320:4;46272:22;:53::i;20098:916::-;20151:7;;-1:-1:-1;;;20226:17:0;;20222:103;;-1:-1:-1;;;20263:17:0;;;-1:-1:-1;20308:2:0;20298:12;20222:103;20351:8;20342:5;:17;20338:103;;20388:8;20379:17;;;-1:-1:-1;20424:2:0;20414:12;20338:103;20467:8;20458:5;:17;20454:103;;20504:8;20495:17;;;-1:-1:-1;20540:2:0;20530:12;20454:103;20583:7;20574:5;:16;20570:100;;20619:7;20610:16;;;-1:-1:-1;20654:1:0;20644:11;20570:100;20696:7;20687:5;:16;20683:100;;20732:7;20723:16;;;-1:-1:-1;20767:1:0;20757:11;20683:100;20809:7;20800:5;:16;20796:100;;20845:7;20836:16;;;-1:-1:-1;20880:1:0;20870:11;20796:100;20922:7;20913:5;:16;20909:66;;20959:1;20949:11;21001:6;20098:916;-1:-1:-1;;20098:916:0:o;41572:272::-;41675:4;-1:-1:-1;;;;;41710:21:0;;;;;;:127;;;41757:7;-1:-1:-1;;;;;41748:16:0;:5;-1:-1:-1;;;;;41748:16:0;;:52;;;;41768:32;41785:5;41792:7;41768:16;:32::i;:::-;41748:88;;;-1:-1:-1;41204:7:0;41230:24;;;:15;:24;;;;;;-1:-1:-1;;;;;41804:32:0;;;41230:24;;41804:32;41748:88;41691:146;41572:272;-1:-1:-1;;;;41572:272:0:o;45151:327::-;-1:-1:-1;;;;;45218:16:0;;45214:87;;45257:33;;-1:-1:-1;;;45257:33:0;;45287:1;45257:33;;;1679:51:1;1652:18;;45257:33:0;1533:203:1;45214:87:0;45310:21;45334:32;45342:2;45346:7;45363:1;45334:7;:32::i;:::-;45310:56;-1:-1:-1;;;;;;45380:27:0;;;45376:96;;45430:31;;-1:-1:-1;;;45430:31:0;;45458:1;45430:31;;;1679:51:1;1652:18;;45430:31:0;1533:203:1;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;391:131::-;-1:-1:-1;;;;;;465:32:1;;455:43;;445:71;;512:1;509;502:12;445:71;391:131;:::o;527:245::-;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:1;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:1;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:1:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:1;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:1:o;2360:808::-;2457:6;2465;2473;2481;2489;2542:3;2530:9;2521:7;2517:23;2513:33;2510:53;;;2559:1;2556;2549:12;2510:53;2582:29;2601:9;2582:29;:::i;:::-;2572:39;;2630:38;2664:2;2653:9;2649:18;2630:38;:::i;:::-;2620:48;;2715:2;2704:9;2700:18;2687:32;2677:42;;2770:2;2759:9;2755:18;2742:32;2793:18;2834:2;2826:6;2823:14;2820:34;;;2850:1;2847;2840:12;2820:34;2888:6;2877:9;2873:22;2863:32;;2933:7;2926:4;2922:2;2918:13;2914:27;2904:55;;2955:1;2952;2945:12;2904:55;2995:2;2982:16;3021:2;3013:6;3010:14;3007:34;;;3037:1;3034;3027:12;3007:34;3082:7;3077:2;3068:6;3064:2;3060:15;3056:24;3053:37;3050:57;;;3103:1;3100;3093:12;3050:57;2360:808;;;;-1:-1:-1;2360:808:1;;-1:-1:-1;3134:2:1;3126:11;;3156:6;2360:808;-1:-1:-1;;;2360:808:1:o;3380:328::-;3457:6;3465;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3565:29;3584:9;3565:29;:::i;:::-;3555:39;;3613:38;3647:2;3636:9;3632:18;3613:38;:::i;:::-;3603:48;;3698:2;3687:9;3683:18;3670:32;3660:42;;3380:328;;;;;:::o;3713:186::-;3772:6;3825:2;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3864:29;3883:9;3864:29;:::i;3904:254::-;3972:6;3980;4033:2;4021:9;4012:7;4008:23;4004:32;4001:52;;;4049:1;4046;4039:12;4001:52;4085:9;4072:23;4062:33;;4114:38;4148:2;4137:9;4133:18;4114:38;:::i;:::-;4104:48;;3904:254;;;;;:::o;4163:347::-;4228:6;4236;4289:2;4277:9;4268:7;4264:23;4260:32;4257:52;;;4305:1;4302;4295:12;4257:52;4328:29;4347:9;4328:29;:::i;:::-;4318:39;;4407:2;4396:9;4392:18;4379:32;4454:5;4447:13;4440:21;4433:5;4430:32;4420:60;;4476:1;4473;4466:12;4420:60;4499:5;4489:15;;;4163:347;;;;;:::o;4515:127::-;4576:10;4571:3;4567:20;4564:1;4557:31;4607:4;4604:1;4597:15;4631:4;4628:1;4621:15;4647:1138;4742:6;4750;4758;4766;4819:3;4807:9;4798:7;4794:23;4790:33;4787:53;;;4836:1;4833;4826:12;4787:53;4859:29;4878:9;4859:29;:::i;:::-;4849:39;;4907:38;4941:2;4930:9;4926:18;4907:38;:::i;:::-;4897:48;;4992:2;4981:9;4977:18;4964:32;4954:42;;5047:2;5036:9;5032:18;5019:32;5070:18;5111:2;5103:6;5100:14;5097:34;;;5127:1;5124;5117:12;5097:34;5165:6;5154:9;5150:22;5140:32;;5210:7;5203:4;5199:2;5195:13;5191:27;5181:55;;5232:1;5229;5222:12;5181:55;5268:2;5255:16;5290:2;5286;5283:10;5280:36;;;5296:18;;:::i;:::-;5371:2;5365:9;5339:2;5425:13;;-1:-1:-1;;5421:22:1;;;5445:2;5417:31;5413:40;5401:53;;;5469:18;;;5489:22;;;5466:46;5463:72;;;5515:18;;:::i;:::-;5555:10;5551:2;5544:22;5590:2;5582:6;5575:18;5630:7;5625:2;5620;5616;5612:11;5608:20;5605:33;5602:53;;;5651:1;5648;5641:12;5602:53;5707:2;5702;5698;5694:11;5689:2;5681:6;5677:15;5664:46;5752:1;5747:2;5742;5734:6;5730:15;5726:24;5719:35;5773:6;5763:16;;;;;;;4647:1138;;;;;;;:::o;5790:260::-;5858:6;5866;5919:2;5907:9;5898:7;5894:23;5890:32;5887:52;;;5935:1;5932;5925:12;5887:52;5958:29;5977:9;5958:29;:::i;:::-;5948:39;;6006:38;6040:2;6029:9;6025:18;6006:38;:::i;6055:380::-;6134:1;6130:12;;;;6177;;;6198:61;;6252:4;6244:6;6240:17;6230:27;;6198:61;6305:2;6297:6;6294:14;6274:18;6271:38;6268:161;;6351:10;6346:3;6342:20;6339:1;6332:31;6386:4;6383:1;6376:15;6414:4;6411:1;6404:15;6268:161;;6055:380;;;:::o;6820:265::-;6893:9;;;6924;;6941:15;;;6935:22;;6921:37;6911:168;;7001:10;6996:3;6992:20;6989:1;6982:31;7036:4;7033:1;7026:15;7064:4;7061:1;7054:15;7090:496;7269:3;7307:6;7301:13;7323:66;7382:6;7377:3;7370:4;7362:6;7358:17;7323:66;:::i;:::-;7452:13;;7411:16;;;;7474:70;7452:13;7411:16;7521:4;7509:17;;7474:70;:::i;:::-;7560:20;;7090:496;-1:-1:-1;;;;7090:496:1:o;7591:489::-;-1:-1:-1;;;;;7860:15:1;;;7842:34;;7912:15;;7907:2;7892:18;;7885:43;7959:2;7944:18;;7937:34;;;8007:3;8002:2;7987:18;;7980:31;;;7785:4;;8028:46;;8054:19;;8046:6;8028:46;:::i;:::-;8020:54;7591:489;-1:-1:-1;;;;;;7591:489:1:o;8085:249::-;8154:6;8207:2;8195:9;8186:7;8182:23;8178:32;8175:52;;;8223:1;8220;8213:12;8175:52;8255:9;8249:16;8274:30;8298:5;8274:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getBalance()":"12065fe0","isApprovedForAll(address,address)":"e985e9c5","mint(uint256,address)":"94bf804d","name()":"06fdde03","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sendTo\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"sendTo","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json new file mode 100644 index 0000000..b90ebf7 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204531b5a6bc47f17ae9728541903b8b24a9fb6178221f026929298cc19449fea564736f6c63430008180033","sourceMap":"8087:14914:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;8087:14914:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204531b5a6bc47f17ae9728541903b8b24a9fb6178221f026929298cc19449fea564736f6c63430008180033","sourceMap":"8087:14914:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json new file mode 100644 index 0000000..b710972 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122085a4a96a835b8d28cf147d27dd54689964a700e3fd30d9c6057aab9b9a8e6ee764736f6c63430008180033","sourceMap":"6812:1047:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;6812:1047:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122085a4a96a835b8d28cf147d27dd54689964a700e3fd30d9c6057aab9b9a8e6ee764736f6c63430008180033","sourceMap":"6812:1047:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json new file mode 100644 index 0000000..7a54d18 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207448557cc61449e3b281a8477395db29a9739589669cbdb3f73dca9b56a406e064736f6c63430008180033","sourceMap":"23188:2847:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;23188:2847:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207448557cc61449e3b281a8477395db29a9739589669cbdb3f73dca9b56a406e064736f6c63430008180033","sourceMap":"23188:2847:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/Math.sol/Math.json b/examples/on-chain_mnist/contracts/out/Math.sol/Math.json index a3b2577..4e1d4bc 100644 --- a/examples/on-chain_mnist/contracts/out/Math.sol/Math.json +++ b/examples/on-chain_mnist/contracts/out/Math.sol/Math.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206caa7828cdaac9ae5bc068e0d5c0493b9f52284b630d93ade36d6c2e1a6f09a064736f6c63430008170033","sourceMap":"203:14914:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:9;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206caa7828cdaac9ae5bc068e0d5c0493b9f52284b630d93ade36d6c2e1a6f09a064736f6c63430008170033","sourceMap":"203:14914:9:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":"Math"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","id":2684,"exportedSymbols":{"Math":[2683]},"nodeType":"SourceUnit","src":"103:15015:9","nodes":[{"id":1631,"nodeType":"PragmaDirective","src":"103:24:9","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2683,"nodeType":"ContractDefinition","src":"203:14914:9","nodes":[{"id":1635,"nodeType":"ErrorDefinition","src":"277:29:9","nodes":[],"documentation":{"id":1633,"nodeType":"StructuredDocumentation","src":"222:50:9","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"283:20:9","parameters":{"id":1634,"nodeType":"ParameterList","parameters":[],"src":"303:2:9"}},{"id":1640,"nodeType":"EnumDefinition","src":"312:169:9","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":1636,"name":"Floor","nameLocation":"336:5:9","nodeType":"EnumValue","src":"336:5:9"},{"id":1637,"name":"Ceil","nameLocation":"379:4:9","nodeType":"EnumValue","src":"379:4:9"},{"id":1638,"name":"Trunc","nameLocation":"421:5:9","nodeType":"EnumValue","src":"421:5:9"},{"id":1639,"name":"Expand","nameLocation":"451:6:9","nodeType":"EnumValue","src":"451:6:9"}],"name":"Rounding","nameLocation":"317:8:9"},{"id":1672,"nodeType":"FunctionDefinition","src":"585:216:9","nodes":[],"body":{"id":1671,"nodeType":"Block","src":"661:140:9","nodes":[],"statements":[{"id":1670,"nodeType":"UncheckedBlock","src":"671:124:9","statements":[{"assignments":[1653],"declarations":[{"constant":false,"id":1653,"mutability":"mutable","name":"c","nameLocation":"703:1:9","nodeType":"VariableDeclaration","scope":1670,"src":"695:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1652,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1657,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"707:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"711:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1658,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"730:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1659,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"734:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1665,"nodeType":"IfStatement","src":"726:28:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1651,"id":1664,"nodeType":"Return","src":"737:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1667,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"782:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1651,"id":1669,"nodeType":"Return","src":"768:16:9"}]}]},"documentation":{"id":1641,"nodeType":"StructuredDocumentation","src":"487:93:9","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:9","parameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1643,"mutability":"mutable","name":"a","nameLocation":"609:1:9","nodeType":"VariableDeclaration","scope":1672,"src":"601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1642,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"b","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1672,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:9"},"returnParameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"646:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1647,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"652:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1649,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1700,"nodeType":"FunctionDefinition","src":"908:189:9","nodes":[],"body":{"id":1699,"nodeType":"Block","src":"984:113:9","nodes":[],"statements":[{"id":1698,"nodeType":"UncheckedBlock","src":"994:97:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1022:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1685,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1026:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1691,"nodeType":"IfStatement","src":"1018:28:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1683,"id":1690,"nodeType":"Return","src":"1029:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1693,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1074:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1694,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1078:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1683,"id":1697,"nodeType":"Return","src":"1060:20:9"}]}]},"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"807:96:9","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:9","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"mutability":"mutable","name":"a","nameLocation":"932:1:9","nodeType":"VariableDeclaration","scope":1700,"src":"924:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"b","nameLocation":"943:1:9","nodeType":"VariableDeclaration","scope":1700,"src":"935:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1676,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:9"},"returnParameters":{"id":1683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1700,"src":"969:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1679,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1700,"src":"975:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1742,"nodeType":"FunctionDefinition","src":"1207:493:9","nodes":[],"body":{"id":1741,"nodeType":"Block","src":"1283:417:9","nodes":[],"statements":[{"id":1740,"nodeType":"UncheckedBlock","src":"1293:401:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1712,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1551:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1719,"nodeType":"IfStatement","src":"1547:28:9","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":1715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1711,"id":1718,"nodeType":"Return","src":"1559:16:9"}},{"assignments":[1721],"declarations":[{"constant":false,"id":1721,"mutability":"mutable","name":"c","nameLocation":"1597:1:9","nodeType":"VariableDeclaration","scope":1740,"src":"1589:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1725,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1722,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1601:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1723,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"1605:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1726,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"1624:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1727,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1628:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1729,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"1633:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1735,"nodeType":"IfStatement","src":"1620:33:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1711,"id":1734,"nodeType":"Return","src":"1636:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1737,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"1681:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1711,"id":1739,"nodeType":"Return","src":"1667:16:9"}]}]},"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"1103:99:9","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:9","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"a","nameLocation":"1231:1:9","nodeType":"VariableDeclaration","scope":1742,"src":"1223:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"b","nameLocation":"1242:1:9","nodeType":"VariableDeclaration","scope":1742,"src":"1234:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:9"},"returnParameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"1268:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1707,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"1274:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1709,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1770,"nodeType":"FunctionDefinition","src":"1811:190:9","nodes":[],"body":{"id":1769,"nodeType":"Block","src":"1887:114:9","nodes":[],"statements":[{"id":1768,"nodeType":"UncheckedBlock","src":"1897:98:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1754,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1925:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1761,"nodeType":"IfStatement","src":"1921:29:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1759,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1753,"id":1760,"nodeType":"Return","src":"1933:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"1978:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1764,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1982:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1766,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1753,"id":1767,"nodeType":"Return","src":"1964:20:9"}]}]},"documentation":{"id":1743,"nodeType":"StructuredDocumentation","src":"1706:100:9","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:9","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1745,"mutability":"mutable","name":"a","nameLocation":"1835:1:9","nodeType":"VariableDeclaration","scope":1770,"src":"1827:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"b","nameLocation":"1846:1:9","nodeType":"VariableDeclaration","scope":1770,"src":"1838:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:9"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1770,"src":"1872:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1749,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1770,"src":"1878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1751,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1798,"nodeType":"FunctionDefinition","src":"2122:190:9","nodes":[],"body":{"id":1797,"nodeType":"Block","src":"2198:114:9","nodes":[],"statements":[{"id":1796,"nodeType":"UncheckedBlock","src":"2208:98:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1782,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1789,"nodeType":"IfStatement","src":"2232:29:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1787,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1781,"id":1788,"nodeType":"Return","src":"2244:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1791,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"2289:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1792,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2293:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1781,"id":1795,"nodeType":"Return","src":"2275:20:9"}]}]},"documentation":{"id":1771,"nodeType":"StructuredDocumentation","src":"2007:110:9","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:9","parameters":{"id":1776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1773,"mutability":"mutable","name":"a","nameLocation":"2146:1:9","nodeType":"VariableDeclaration","scope":1798,"src":"2138:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1772,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1775,"mutability":"mutable","name":"b","nameLocation":"2157:1:9","nodeType":"VariableDeclaration","scope":1798,"src":"2149:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:9"},"returnParameters":{"id":1781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"2183:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1777,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"2189:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1816,"nodeType":"FunctionDefinition","src":"2382:104:9","nodes":[],"body":{"id":1815,"nodeType":"Block","src":"2449:37:9","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1808,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"2466:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1809,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"2470:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1812,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"2478:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:9","trueExpression":{"id":1811,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"2474:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1807,"id":1814,"nodeType":"Return","src":"2459:20:9"}]},"documentation":{"id":1799,"nodeType":"StructuredDocumentation","src":"2318:59:9","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:9","parameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"a","nameLocation":"2403:1:9","nodeType":"VariableDeclaration","scope":1816,"src":"2395:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1803,"mutability":"mutable","name":"b","nameLocation":"2414:1:9","nodeType":"VariableDeclaration","scope":1816,"src":"2406:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:9"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1816,"src":"2440:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1805,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1834,"nodeType":"FunctionDefinition","src":"2557:104:9","nodes":[],"body":{"id":1833,"nodeType":"Block","src":"2624:37:9","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1826,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"2641:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1827,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"2645:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1830,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"2653:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:9","trueExpression":{"id":1829,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"2649:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1825,"id":1832,"nodeType":"Return","src":"2634:20:9"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"2492:60:9","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:9","parameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1819,"mutability":"mutable","name":"a","nameLocation":"2578:1:9","nodeType":"VariableDeclaration","scope":1834,"src":"2570:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1821,"mutability":"mutable","name":"b","nameLocation":"2589:1:9","nodeType":"VariableDeclaration","scope":1834,"src":"2581:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1820,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:9"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1834,"src":"2615:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1857,"nodeType":"FunctionDefinition","src":"2774:153:9","nodes":[],"body":{"id":1856,"nodeType":"Block","src":"2845:82:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1844,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2900:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1845,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"2904:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1847,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1848,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1849,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"2914:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1843,"id":1855,"nodeType":"Return","src":"2892:28:9"}]},"documentation":{"id":1835,"nodeType":"StructuredDocumentation","src":"2667:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:9","parameters":{"id":1840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"a","nameLocation":"2799:1:9","nodeType":"VariableDeclaration","scope":1857,"src":"2791:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1836,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"b","nameLocation":"2810:1:9","nodeType":"VariableDeclaration","scope":1857,"src":"2802:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1838,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:9"},"returnParameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1857,"src":"2836:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1841,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1891,"nodeType":"FunctionDefinition","src":"3148:331:9","nodes":[],"body":{"id":1890,"nodeType":"Block","src":"3219:260:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"3229:127:9","trueBody":{"id":1874,"nodeType":"Block","src":"3241:115:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3340:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3344:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1866,"id":1873,"nodeType":"Return","src":"3333:12:9"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1876,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3444:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1880,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3458:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1884,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3467:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:9","trueExpression":{"hexValue":"30","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1866,"id":1889,"nodeType":"Return","src":"3437:35:9"}]},"documentation":{"id":1858,"nodeType":"StructuredDocumentation","src":"2933:210:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:9","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"mutability":"mutable","name":"a","nameLocation":"3173:1:9","nodeType":"VariableDeclaration","scope":1891,"src":"3165:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1859,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"b","nameLocation":"3184:1:9","nodeType":"VariableDeclaration","scope":1891,"src":"3176:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1861,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:9"},"returnParameters":{"id":1866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1891,"src":"3210:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1864,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2017,"nodeType":"FunctionDefinition","src":"3803:4116:9","nodes":[],"body":{"id":2016,"nodeType":"Block","src":"3901:4018:9","nodes":[],"statements":[{"id":2015,"nodeType":"UncheckedBlock","src":"3911:4002:9","statements":[{"assignments":[1904],"declarations":[{"constant":false,"id":1904,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:9","nodeType":"VariableDeclaration","scope":2015,"src":"4232:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1908,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4248:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1906,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"4252:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:9"},{"assignments":[1910],"declarations":[{"constant":false,"id":1910,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:9","nodeType":"VariableDeclaration","scope":2015,"src":"4312:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1911,"nodeType":"VariableDeclarationStatement","src":"4312:13:9"},{"AST":{"nativeSrc":"4392:122:9","nodeType":"YulBlock","src":"4392:122:9","statements":[{"nativeSrc":"4410:30:9","nodeType":"YulVariableDeclaration","src":"4410:30:9","value":{"arguments":[{"name":"x","nativeSrc":"4427:1:9","nodeType":"YulIdentifier","src":"4427:1:9"},{"name":"y","nativeSrc":"4430:1:9","nodeType":"YulIdentifier","src":"4430:1:9"},{"arguments":[{"kind":"number","nativeSrc":"4437:1:9","nodeType":"YulLiteral","src":"4437:1:9","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4433:3:9","nodeType":"YulIdentifier","src":"4433:3:9"},"nativeSrc":"4433:6:9","nodeType":"YulFunctionCall","src":"4433:6:9"}],"functionName":{"name":"mulmod","nativeSrc":"4420:6:9","nodeType":"YulIdentifier","src":"4420:6:9"},"nativeSrc":"4420:20:9","nodeType":"YulFunctionCall","src":"4420:20:9"},"variables":[{"name":"mm","nativeSrc":"4414:2:9","nodeType":"YulTypedName","src":"4414:2:9","type":""}]},{"nativeSrc":"4457:43:9","nodeType":"YulAssignment","src":"4457:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"4474:2:9","nodeType":"YulIdentifier","src":"4474:2:9"},{"name":"prod0","nativeSrc":"4478:5:9","nodeType":"YulIdentifier","src":"4478:5:9"}],"functionName":{"name":"sub","nativeSrc":"4470:3:9","nodeType":"YulIdentifier","src":"4470:3:9"},"nativeSrc":"4470:14:9","nodeType":"YulFunctionCall","src":"4470:14:9"},{"arguments":[{"name":"mm","nativeSrc":"4489:2:9","nodeType":"YulIdentifier","src":"4489:2:9"},{"name":"prod0","nativeSrc":"4493:5:9","nodeType":"YulIdentifier","src":"4493:5:9"}],"functionName":{"name":"lt","nativeSrc":"4486:2:9","nodeType":"YulIdentifier","src":"4486:2:9"},"nativeSrc":"4486:13:9","nodeType":"YulFunctionCall","src":"4486:13:9"}],"functionName":{"name":"sub","nativeSrc":"4466:3:9","nodeType":"YulIdentifier","src":"4466:3:9"},"nativeSrc":"4466:34:9","nodeType":"YulFunctionCall","src":"4466:34:9"},"variableNames":[{"name":"prod1","nativeSrc":"4457:5:9","nodeType":"YulIdentifier","src":"4457:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1904,"isOffset":false,"isSlot":false,"src":"4478:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"4493:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"4457:5:9","valueSize":1},{"declaration":1894,"isOffset":false,"isSlot":false,"src":"4427:1:9","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"4430:1:9","valueSize":1}],"id":1912,"nodeType":"InlineAssembly","src":"4383:131:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1913,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"4595:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1921,"nodeType":"IfStatement","src":"4591:368:9","trueBody":{"id":1920,"nodeType":"Block","src":"4607:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1916,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"4925:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1917,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"4933:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1902,"id":1919,"nodeType":"Return","src":"4918:26:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1922,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5065:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1923,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"5080:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1929,"nodeType":"IfStatement","src":"5061:88:9","trueBody":{"id":1928,"nodeType":"Block","src":"5087:62:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1925,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"5112:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1927,"nodeType":"RevertStatement","src":"5105:29:9"}]}},{"assignments":[1931],"declarations":[{"constant":false,"id":1931,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:9","nodeType":"VariableDeclaration","scope":2015,"src":"5404:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1932,"nodeType":"VariableDeclarationStatement","src":"5404:17:9"},{"AST":{"nativeSrc":"5444:291:9","nodeType":"YulBlock","src":"5444:291:9","statements":[{"nativeSrc":"5513:38:9","nodeType":"YulAssignment","src":"5513:38:9","value":{"arguments":[{"name":"x","nativeSrc":"5533:1:9","nodeType":"YulIdentifier","src":"5533:1:9"},{"name":"y","nativeSrc":"5536:1:9","nodeType":"YulIdentifier","src":"5536:1:9"},{"name":"denominator","nativeSrc":"5539:11:9","nodeType":"YulIdentifier","src":"5539:11:9"}],"functionName":{"name":"mulmod","nativeSrc":"5526:6:9","nodeType":"YulIdentifier","src":"5526:6:9"},"nativeSrc":"5526:25:9","nodeType":"YulFunctionCall","src":"5526:25:9"},"variableNames":[{"name":"remainder","nativeSrc":"5513:9:9","nodeType":"YulIdentifier","src":"5513:9:9"}]},{"nativeSrc":"5633:41:9","nodeType":"YulAssignment","src":"5633:41:9","value":{"arguments":[{"name":"prod1","nativeSrc":"5646:5:9","nodeType":"YulIdentifier","src":"5646:5:9"},{"arguments":[{"name":"remainder","nativeSrc":"5656:9:9","nodeType":"YulIdentifier","src":"5656:9:9"},{"name":"prod0","nativeSrc":"5667:5:9","nodeType":"YulIdentifier","src":"5667:5:9"}],"functionName":{"name":"gt","nativeSrc":"5653:2:9","nodeType":"YulIdentifier","src":"5653:2:9"},"nativeSrc":"5653:20:9","nodeType":"YulFunctionCall","src":"5653:20:9"}],"functionName":{"name":"sub","nativeSrc":"5642:3:9","nodeType":"YulIdentifier","src":"5642:3:9"},"nativeSrc":"5642:32:9","nodeType":"YulFunctionCall","src":"5642:32:9"},"variableNames":[{"name":"prod1","nativeSrc":"5633:5:9","nodeType":"YulIdentifier","src":"5633:5:9"}]},{"nativeSrc":"5691:30:9","nodeType":"YulAssignment","src":"5691:30:9","value":{"arguments":[{"name":"prod0","nativeSrc":"5704:5:9","nodeType":"YulIdentifier","src":"5704:5:9"},{"name":"remainder","nativeSrc":"5711:9:9","nodeType":"YulIdentifier","src":"5711:9:9"}],"functionName":{"name":"sub","nativeSrc":"5700:3:9","nodeType":"YulIdentifier","src":"5700:3:9"},"nativeSrc":"5700:21:9","nodeType":"YulFunctionCall","src":"5700:21:9"},"variableNames":[{"name":"prod0","nativeSrc":"5691:5:9","nodeType":"YulIdentifier","src":"5691:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1898,"isOffset":false,"isSlot":false,"src":"5539:11:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5667:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5691:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5704:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"5633:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"5646:5:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5513:9:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5656:9:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5711:9:9","valueSize":1},{"declaration":1894,"isOffset":false,"isSlot":false,"src":"5533:1:9","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"5536:1:9","valueSize":1}],"id":1933,"nodeType":"InlineAssembly","src":"5435:300:9"},{"assignments":[1935],"declarations":[{"constant":false,"id":1935,"mutability":"mutable","name":"twos","nameLocation":"5947:4:9","nodeType":"VariableDeclaration","scope":2015,"src":"5939:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1942,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1936,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5954:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1938,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5973:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:9"},{"AST":{"nativeSrc":"6008:362:9","nodeType":"YulBlock","src":"6008:362:9","statements":[{"nativeSrc":"6073:37:9","nodeType":"YulAssignment","src":"6073:37:9","value":{"arguments":[{"name":"denominator","nativeSrc":"6092:11:9","nodeType":"YulIdentifier","src":"6092:11:9"},{"name":"twos","nativeSrc":"6105:4:9","nodeType":"YulIdentifier","src":"6105:4:9"}],"functionName":{"name":"div","nativeSrc":"6088:3:9","nodeType":"YulIdentifier","src":"6088:3:9"},"nativeSrc":"6088:22:9","nodeType":"YulFunctionCall","src":"6088:22:9"},"variableNames":[{"name":"denominator","nativeSrc":"6073:11:9","nodeType":"YulIdentifier","src":"6073:11:9"}]},{"nativeSrc":"6177:25:9","nodeType":"YulAssignment","src":"6177:25:9","value":{"arguments":[{"name":"prod0","nativeSrc":"6190:5:9","nodeType":"YulIdentifier","src":"6190:5:9"},{"name":"twos","nativeSrc":"6197:4:9","nodeType":"YulIdentifier","src":"6197:4:9"}],"functionName":{"name":"div","nativeSrc":"6186:3:9","nodeType":"YulIdentifier","src":"6186:3:9"},"nativeSrc":"6186:16:9","nodeType":"YulFunctionCall","src":"6186:16:9"},"variableNames":[{"name":"prod0","nativeSrc":"6177:5:9","nodeType":"YulIdentifier","src":"6177:5:9"}]},{"nativeSrc":"6317:39:9","nodeType":"YulAssignment","src":"6317:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6337:1:9","nodeType":"YulLiteral","src":"6337:1:9","type":"","value":"0"},{"name":"twos","nativeSrc":"6340:4:9","nodeType":"YulIdentifier","src":"6340:4:9"}],"functionName":{"name":"sub","nativeSrc":"6333:3:9","nodeType":"YulIdentifier","src":"6333:3:9"},"nativeSrc":"6333:12:9","nodeType":"YulFunctionCall","src":"6333:12:9"},{"name":"twos","nativeSrc":"6347:4:9","nodeType":"YulIdentifier","src":"6347:4:9"}],"functionName":{"name":"div","nativeSrc":"6329:3:9","nodeType":"YulIdentifier","src":"6329:3:9"},"nativeSrc":"6329:23:9","nodeType":"YulFunctionCall","src":"6329:23:9"},{"kind":"number","nativeSrc":"6354:1:9","nodeType":"YulLiteral","src":"6354:1:9","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6325:3:9","nodeType":"YulIdentifier","src":"6325:3:9"},"nativeSrc":"6325:31:9","nodeType":"YulFunctionCall","src":"6325:31:9"},"variableNames":[{"name":"twos","nativeSrc":"6317:4:9","nodeType":"YulIdentifier","src":"6317:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1898,"isOffset":false,"isSlot":false,"src":"6073:11:9","valueSize":1},{"declaration":1898,"isOffset":false,"isSlot":false,"src":"6092:11:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"6177:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"6190:5:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6105:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6197:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6317:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6340:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6347:4:9","valueSize":1}],"id":1943,"nodeType":"InlineAssembly","src":"5999:371:9"},{"expression":{"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1944,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6436:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1945,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"6445:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1946,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"6453:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1949,"nodeType":"ExpressionStatement","src":"6436:21:9"},{"assignments":[1951],"declarations":[{"constant":false,"id":1951,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:9","nodeType":"VariableDeclaration","scope":2015,"src":"6775:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1950,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1958,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1953,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"6798:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1959,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7031:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1961,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7046:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1962,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7060:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"7031:36:9"},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1967,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7100:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1969,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7115:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1970,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7129:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1974,"nodeType":"ExpressionStatement","src":"7100:36:9"},{"expression":{"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1975,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7170:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1977,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7185:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1978,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7199:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1982,"nodeType":"ExpressionStatement","src":"7170:36:9"},{"expression":{"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1983,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7240:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1985,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7255:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1986,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7269:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1990,"nodeType":"ExpressionStatement","src":"7240:36:9"},{"expression":{"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1991,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7310:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1993,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7325:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1994,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7339:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1998,"nodeType":"ExpressionStatement","src":"7310:36:9"},{"expression":{"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1999,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7381:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7396:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2002,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7410:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2006,"nodeType":"ExpressionStatement","src":"7381:36:9"},{"expression":{"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7851:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2008,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7860:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2009,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7868:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2012,"nodeType":"ExpressionStatement","src":"7851:24:9"},{"expression":{"id":2013,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7896:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1902,"id":2014,"nodeType":"Return","src":"7889:13:9"}]}]},"documentation":{"id":1892,"nodeType":"StructuredDocumentation","src":"3485:313:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:9","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1894,"mutability":"mutable","name":"x","nameLocation":"3827:1:9","nodeType":"VariableDeclaration","scope":2017,"src":"3819:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1893,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1896,"mutability":"mutable","name":"y","nameLocation":"3838:1:9","nodeType":"VariableDeclaration","scope":2017,"src":"3830:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:9","nodeType":"VariableDeclaration","scope":2017,"src":"3841:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:9"},"returnParameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"result","nameLocation":"3893:6:9","nodeType":"VariableDeclaration","scope":2017,"src":"3885:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2060,"nodeType":"FunctionDefinition","src":"8051:302:9","nodes":[],"body":{"id":2059,"nodeType":"Block","src":"8161:192:9","nodes":[],"statements":[{"assignments":[2033],"declarations":[{"constant":false,"id":2033,"mutability":"mutable","name":"result","nameLocation":"8179:6:9","nodeType":"VariableDeclaration","scope":2059,"src":"8171:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2032,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2039,"initialValue":{"arguments":[{"id":2035,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"8195:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2036,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"8198:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2037,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"8201:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2034,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2017,2060],"referencedDeclaration":2017,"src":"8188:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2041,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"8244:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2040,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"8227:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2044,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"8264:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2045,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"8267:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2046,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"8270:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2043,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2056,"nodeType":"IfStatement","src":"8223:101:9","trueBody":{"id":2055,"nodeType":"Block","src":"8288:36:9","statements":[{"expression":{"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2051,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"8302:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2054,"nodeType":"ExpressionStatement","src":"8302:11:9"}]}},{"expression":{"id":2057,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"8340:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2031,"id":2058,"nodeType":"Return","src":"8333:13:9"}]},"documentation":{"id":2018,"nodeType":"StructuredDocumentation","src":"7925:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:9","parameters":{"id":2028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2020,"mutability":"mutable","name":"x","nameLocation":"8075:1:9","nodeType":"VariableDeclaration","scope":2060,"src":"8067:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2019,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"y","nameLocation":"8086:1:9","nodeType":"VariableDeclaration","scope":2060,"src":"8078:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2024,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:9","nodeType":"VariableDeclaration","scope":2060,"src":"8089:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:9","nodeType":"VariableDeclaration","scope":2060,"src":"8110:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2026,"nodeType":"UserDefinedTypeName","pathNode":{"id":2025,"name":"Rounding","nameLocations":["8110:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"8110:8:9"},"referencedDeclaration":1640,"src":"8110:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:9"},"returnParameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2060,"src":"8152:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2172,"nodeType":"FunctionDefinition","src":"8587:1642:9","nodes":[],"body":{"id":2171,"nodeType":"Block","src":"8644:1585:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2068,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"8658:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2074,"nodeType":"IfStatement","src":"8654:45:9","trueBody":{"id":2073,"nodeType":"Block","src":"8666:33:9","statements":[{"expression":{"hexValue":"30","id":2071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2067,"id":2072,"nodeType":"Return","src":"8680:8:9"}]}},{"assignments":[2076],"declarations":[{"constant":false,"id":2076,"mutability":"mutable","name":"result","nameLocation":"9386:6:9","nodeType":"VariableDeclaration","scope":2171,"src":"9378:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2085,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9406:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2078,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2339,2374],"referencedDeclaration":2339,"src":"9401:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:9"},{"id":2170,"nodeType":"UncheckedBlock","src":"9815:408:9","statements":[{"expression":{"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9839:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9849:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9858:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9862:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2092,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2096,"nodeType":"ExpressionStatement","src":"9839:35:9"},{"expression":{"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9888:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9898:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2099,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9907:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2100,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9911:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2107,"nodeType":"ExpressionStatement","src":"9888:35:9"},{"expression":{"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9937:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9947:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2110,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2111,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9960:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2118,"nodeType":"ExpressionStatement","src":"9937:35:9"},{"expression":{"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9986:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9996:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2121,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10005:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2122,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10009:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2129,"nodeType":"ExpressionStatement","src":"9986:35:9"},{"expression":{"id":2139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10035:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10045:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2132,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10054:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2133,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10058:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2136,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2140,"nodeType":"ExpressionStatement","src":"10035:35:9"},{"expression":{"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2141,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10084:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2142,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10094:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10103:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10107:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2147,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2151,"nodeType":"ExpressionStatement","src":"10084:35:9"},{"expression":{"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2152,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10133:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2153,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10143:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2154,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10152:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2155,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10156:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2162,"nodeType":"ExpressionStatement","src":"10133:35:9"},{"expression":{"arguments":[{"id":2164,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10193:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2165,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10201:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2166,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10205:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2163,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"10189:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2067,"id":2169,"nodeType":"Return","src":"10182:30:9"}]}]},"documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"8359:223:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:9","parameters":{"id":2064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"a","nameLocation":"8609:1:9","nodeType":"VariableDeclaration","scope":2172,"src":"8601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:9"},"returnParameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2172,"src":"8635:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2065,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2207,"nodeType":"FunctionDefinition","src":"10329:240:9","nodes":[],"body":{"id":2206,"nodeType":"Block","src":"10405:164:9","nodes":[],"statements":[{"id":2205,"nodeType":"UncheckedBlock","src":"10415:148:9","statements":[{"assignments":[2184],"declarations":[{"constant":false,"id":2184,"mutability":"mutable","name":"result","nameLocation":"10447:6:9","nodeType":"VariableDeclaration","scope":2205,"src":"10439:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2183,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2188,"initialValue":{"arguments":[{"id":2186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10461:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2185,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2172,2207],"referencedDeclaration":2172,"src":"10456:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2189,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2191,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"10511:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2190,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"10494:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2193,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10524:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2194,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10533:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2196,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10542:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:9","trueExpression":{"hexValue":"31","id":2199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2182,"id":2204,"nodeType":"Return","src":"10477:75:9"}]}]},"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"10235:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:9","parameters":{"id":2179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"a","nameLocation":"10351:1:9","nodeType":"VariableDeclaration","scope":2207,"src":"10343:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2178,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:9","nodeType":"VariableDeclaration","scope":2207,"src":"10354:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2177,"nodeType":"UserDefinedTypeName","pathNode":{"id":2176,"name":"Rounding","nameLocations":["10354:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"10354:8:9"},"referencedDeclaration":1640,"src":"10354:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:9"},"returnParameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2207,"src":"10396:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2180,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2339,"nodeType":"FunctionDefinition","src":"10699:983:9","nodes":[],"body":{"id":2338,"nodeType":"Block","src":"10760:922:9","nodes":[],"statements":[{"assignments":[2216],"declarations":[{"constant":false,"id":2216,"mutability":"mutable","name":"result","nameLocation":"10778:6:9","nodeType":"VariableDeclaration","scope":2338,"src":"10770:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2218,"initialValue":{"hexValue":"30","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:9"},{"id":2335,"nodeType":"UncheckedBlock","src":"10798:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2219,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10826:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2233,"nodeType":"IfStatement","src":"10822:99:9","trueBody":{"id":2232,"nodeType":"Block","src":"10844:77:9","statements":[{"expression":{"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10862:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2227,"nodeType":"ExpressionStatement","src":"10862:13:9"},{"expression":{"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"10893:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2231,"nodeType":"ExpressionStatement","src":"10893:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10938:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2248,"nodeType":"IfStatement","src":"10934:96:9","trueBody":{"id":2247,"nodeType":"Block","src":"10955:75:9","statements":[{"expression":{"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10973:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2242,"nodeType":"ExpressionStatement","src":"10973:12:9"},{"expression":{"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2243,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11003:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2246,"nodeType":"ExpressionStatement","src":"11003:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11047:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2263,"nodeType":"IfStatement","src":"11043:96:9","trueBody":{"id":2262,"nodeType":"Block","src":"11064:75:9","statements":[{"expression":{"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2254,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11082:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2257,"nodeType":"ExpressionStatement","src":"11082:12:9"},{"expression":{"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2258,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11112:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2261,"nodeType":"ExpressionStatement","src":"11112:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11156:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2278,"nodeType":"IfStatement","src":"11152:96:9","trueBody":{"id":2277,"nodeType":"Block","src":"11173:75:9","statements":[{"expression":{"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11191:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2272,"nodeType":"ExpressionStatement","src":"11191:12:9"},{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2273,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11221:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"11221:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11265:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2293,"nodeType":"IfStatement","src":"11261:93:9","trueBody":{"id":2292,"nodeType":"Block","src":"11281:73:9","statements":[{"expression":{"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11299:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2287,"nodeType":"ExpressionStatement","src":"11299:11:9"},{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2288,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11328:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"11328:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11371:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2308,"nodeType":"IfStatement","src":"11367:93:9","trueBody":{"id":2307,"nodeType":"Block","src":"11387:73:9","statements":[{"expression":{"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11405:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2302,"nodeType":"ExpressionStatement","src":"11405:11:9"},{"expression":{"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2303,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11434:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2306,"nodeType":"ExpressionStatement","src":"11434:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11477:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2323,"nodeType":"IfStatement","src":"11473:93:9","trueBody":{"id":2322,"nodeType":"Block","src":"11493:73:9","statements":[{"expression":{"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11511:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2317,"nodeType":"ExpressionStatement","src":"11511:11:9"},{"expression":{"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11540:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2321,"nodeType":"ExpressionStatement","src":"11540:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11583:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2334,"nodeType":"IfStatement","src":"11579:64:9","trueBody":{"id":2333,"nodeType":"Block","src":"11599:44:9","statements":[{"expression":{"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2329,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11617:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2332,"nodeType":"ExpressionStatement","src":"11617:11:9"}]}}]},{"expression":{"id":2336,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11669:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2214,"id":2337,"nodeType":"Return","src":"11662:13:9"}]},"documentation":{"id":2208,"nodeType":"StructuredDocumentation","src":"10575:119:9","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:9","parameters":{"id":2211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2210,"mutability":"mutable","name":"value","nameLocation":"10721:5:9","nodeType":"VariableDeclaration","scope":2339,"src":"10713:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:9"},"returnParameters":{"id":2214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2339,"src":"10751:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2374,"nodeType":"FunctionDefinition","src":"11835:248:9","nodes":[],"body":{"id":2373,"nodeType":"Block","src":"11915:168:9","nodes":[],"statements":[{"id":2372,"nodeType":"UncheckedBlock","src":"11925:152:9","statements":[{"assignments":[2351],"declarations":[{"constant":false,"id":2351,"mutability":"mutable","name":"result","nameLocation":"11957:6:9","nodeType":"VariableDeclaration","scope":2372,"src":"11949:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2355,"initialValue":{"arguments":[{"id":2353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"11971:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2352,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2339,2374],"referencedDeclaration":2339,"src":"11966:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2356,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"11998:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2358,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2345,"src":"12025:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2357,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"12008:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2361,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"12043:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"12052:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:9","trueExpression":{"hexValue":"31","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2349,"id":2371,"nodeType":"Return","src":"11991:75:9"}]}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"11688:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:9","parameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"value","nameLocation":"11857:5:9","nodeType":"VariableDeclaration","scope":2374,"src":"11849:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2341,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2345,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:9","nodeType":"VariableDeclaration","scope":2374,"src":"11864:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2344,"nodeType":"UserDefinedTypeName","pathNode":{"id":2343,"name":"Rounding","nameLocations":["11864:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"11864:8:9"},"referencedDeclaration":1640,"src":"11864:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:9"},"returnParameters":{"id":2349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"11906:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2347,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2503,"nodeType":"FunctionDefinition","src":"12214:916:9","nodes":[],"body":{"id":2502,"nodeType":"Block","src":"12276:854:9","nodes":[],"statements":[{"assignments":[2383],"declarations":[{"constant":false,"id":2383,"mutability":"mutable","name":"result","nameLocation":"12294:6:9","nodeType":"VariableDeclaration","scope":2502,"src":"12286:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2382,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2385,"initialValue":{"hexValue":"30","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:9"},{"id":2499,"nodeType":"UncheckedBlock","src":"12314:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12342:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2402,"nodeType":"IfStatement","src":"12338:103:9","trueBody":{"id":2401,"nodeType":"Block","src":"12361:80:9","statements":[{"expression":{"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12379:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2396,"nodeType":"ExpressionStatement","src":"12379:17:9"},{"expression":{"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2397,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12414:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2400,"nodeType":"ExpressionStatement","src":"12414:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12458:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2419,"nodeType":"IfStatement","src":"12454:103:9","trueBody":{"id":2418,"nodeType":"Block","src":"12477:80:9","statements":[{"expression":{"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12495:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2413,"nodeType":"ExpressionStatement","src":"12495:17:9"},{"expression":{"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2414,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12530:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2417,"nodeType":"ExpressionStatement","src":"12530:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12574:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2436,"nodeType":"IfStatement","src":"12570:103:9","trueBody":{"id":2435,"nodeType":"Block","src":"12593:80:9","statements":[{"expression":{"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12611:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2430,"nodeType":"ExpressionStatement","src":"12611:17:9"},{"expression":{"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12646:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2434,"nodeType":"ExpressionStatement","src":"12646:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12690:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2453,"nodeType":"IfStatement","src":"12686:100:9","trueBody":{"id":2452,"nodeType":"Block","src":"12708:78:9","statements":[{"expression":{"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12726:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2447,"nodeType":"ExpressionStatement","src":"12726:16:9"},{"expression":{"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12760:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2451,"nodeType":"ExpressionStatement","src":"12760:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12803:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"IfStatement","src":"12799:100:9","trueBody":{"id":2469,"nodeType":"Block","src":"12821:78:9","statements":[{"expression":{"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12839:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2464,"nodeType":"ExpressionStatement","src":"12839:16:9"},{"expression":{"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12873:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2468,"nodeType":"ExpressionStatement","src":"12873:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2487,"nodeType":"IfStatement","src":"12912:100:9","trueBody":{"id":2486,"nodeType":"Block","src":"12934:78:9","statements":[{"expression":{"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2481,"nodeType":"ExpressionStatement","src":"12952:16:9"},{"expression":{"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12986:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2485,"nodeType":"ExpressionStatement","src":"12986:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"13029:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2498,"nodeType":"IfStatement","src":"13025:66:9","trueBody":{"id":2497,"nodeType":"Block","src":"13047:44:9","statements":[{"expression":{"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2493,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"13065:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2496,"nodeType":"ExpressionStatement","src":"13065:11:9"}]}}]},{"expression":{"id":2500,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"13117:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2381,"id":2501,"nodeType":"Return","src":"13110:13:9"}]},"documentation":{"id":2375,"nodeType":"StructuredDocumentation","src":"12089:120:9","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:9","parameters":{"id":2378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"value","nameLocation":"12237:5:9","nodeType":"VariableDeclaration","scope":2503,"src":"12229:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2376,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:9"},"returnParameters":{"id":2381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2503,"src":"12267:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"13284:251:9","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"13365:170:9","nodes":[],"statements":[{"id":2536,"nodeType":"UncheckedBlock","src":"13375:154:9","statements":[{"assignments":[2515],"declarations":[{"constant":false,"id":2515,"mutability":"mutable","name":"result","nameLocation":"13407:6:9","nodeType":"VariableDeclaration","scope":2536,"src":"13399:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2514,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2519,"initialValue":{"arguments":[{"id":2517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"13422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2516,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2503,2538],"referencedDeclaration":2503,"src":"13416:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2520,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13449:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2522,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2509,"src":"13476:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2521,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"13459:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2525,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13495:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"13504:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:9","trueExpression":{"hexValue":"31","id":2530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2533,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2513,"id":2535,"nodeType":"Return","src":"13442:76:9"}]}]},"documentation":{"id":2504,"nodeType":"StructuredDocumentation","src":"13136:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:9","parameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2506,"mutability":"mutable","name":"value","nameLocation":"13307:5:9","nodeType":"VariableDeclaration","scope":2538,"src":"13299:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2505,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2509,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:9","nodeType":"VariableDeclaration","scope":2538,"src":"13314:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2508,"nodeType":"UserDefinedTypeName","pathNode":{"id":2507,"name":"Rounding","nameLocations":["13314:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"13314:8:9"},"referencedDeclaration":1640,"src":"13314:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:9"},"returnParameters":{"id":2513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2538,"src":"13356:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2511,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2625,"nodeType":"FunctionDefinition","src":"13792:663:9","nodes":[],"body":{"id":2624,"nodeType":"Block","src":"13855:600:9","nodes":[],"statements":[{"assignments":[2547],"declarations":[{"constant":false,"id":2547,"mutability":"mutable","name":"result","nameLocation":"13873:6:9","nodeType":"VariableDeclaration","scope":2624,"src":"13865:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2549,"initialValue":{"hexValue":"30","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:9"},{"id":2621,"nodeType":"UncheckedBlock","src":"13893:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"13921:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2564,"nodeType":"IfStatement","src":"13917:98:9","trueBody":{"id":2563,"nodeType":"Block","src":"13939:76:9","statements":[{"expression":{"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"13957:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2558,"nodeType":"ExpressionStatement","src":"13957:13:9"},{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"13988:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2562,"nodeType":"ExpressionStatement","src":"13988:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14032:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2579,"nodeType":"IfStatement","src":"14028:95:9","trueBody":{"id":2578,"nodeType":"Block","src":"14049:74:9","statements":[{"expression":{"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2573,"nodeType":"ExpressionStatement","src":"14067:12:9"},{"expression":{"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2574,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2577,"nodeType":"ExpressionStatement","src":"14097:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14140:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2594,"nodeType":"IfStatement","src":"14136:95:9","trueBody":{"id":2593,"nodeType":"Block","src":"14157:74:9","statements":[{"expression":{"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2588,"nodeType":"ExpressionStatement","src":"14175:12:9"},{"expression":{"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2589,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14205:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2592,"nodeType":"ExpressionStatement","src":"14205:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14248:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2609,"nodeType":"IfStatement","src":"14244:95:9","trueBody":{"id":2608,"nodeType":"Block","src":"14265:74:9","statements":[{"expression":{"id":2602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2603,"nodeType":"ExpressionStatement","src":"14283:12:9"},{"expression":{"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2604,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14313:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2607,"nodeType":"ExpressionStatement","src":"14313:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14356:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2620,"nodeType":"IfStatement","src":"14352:64:9","trueBody":{"id":2619,"nodeType":"Block","src":"14372:44:9","statements":[{"expression":{"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2615,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14390:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2618,"nodeType":"ExpressionStatement","src":"14390:11:9"}]}}]},{"expression":{"id":2622,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14442:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2545,"id":2623,"nodeType":"Return","src":"14435:13:9"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"13541:246:9","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:9","parameters":{"id":2542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"value","nameLocation":"13816:5:9","nodeType":"VariableDeclaration","scope":2625,"src":"13808:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:9"},"returnParameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2625,"src":"13846:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2543,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2663,"nodeType":"FunctionDefinition","src":"14610:259:9","nodes":[],"body":{"id":2662,"nodeType":"Block","src":"14692:177:9","nodes":[],"statements":[{"id":2661,"nodeType":"UncheckedBlock","src":"14702:161:9","statements":[{"assignments":[2637],"declarations":[{"constant":false,"id":2637,"mutability":"mutable","name":"result","nameLocation":"14734:6:9","nodeType":"VariableDeclaration","scope":2661,"src":"14726:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2636,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2641,"initialValue":{"arguments":[{"id":2639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"14750:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2638,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2625,2663],"referencedDeclaration":2625,"src":"14743:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2642,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"14777:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2644,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"14804:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2643,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"14787:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"14823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"14838:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:9","trueExpression":{"hexValue":"31","id":2655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2658,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2635,"id":2660,"nodeType":"Return","src":"14770:82:9"}]}]},"documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"14461:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:9","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"value","nameLocation":"14634:5:9","nodeType":"VariableDeclaration","scope":2663,"src":"14626:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2627,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:9","nodeType":"VariableDeclaration","scope":2663,"src":"14641:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2630,"nodeType":"UserDefinedTypeName","pathNode":{"id":2629,"name":"Rounding","nameLocations":["14641:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"14641:8:9"},"referencedDeclaration":1640,"src":"14641:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:9"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2663,"src":"14683:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2633,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2682,"nodeType":"FunctionDefinition","src":"14993:122:9","nodes":[],"body":{"id":2681,"nodeType":"Block","src":"15067:48:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2674,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"15090:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2672,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:9","typeDescriptions":{}}},"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2671,"id":2680,"nodeType":"Return","src":"15077:31:9"}]},"documentation":{"id":2664,"nodeType":"StructuredDocumentation","src":"14875:113:9","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:9","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:9","nodeType":"VariableDeclaration","scope":2682,"src":"15019:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2666,"nodeType":"UserDefinedTypeName","pathNode":{"id":2665,"name":"Rounding","nameLocations":["15019:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"15019:8:9"},"referencedDeclaration":1640,"src":"15019:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:9"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2682,"src":"15061:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2669,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1632,"nodeType":"StructuredDocumentation","src":"129:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[2683],"name":"Math","nameLocation":"211:4:9","scope":2684,"usedErrors":[1635],"usedEvents":[]}],"license":"MIT"},"id":9} \ No newline at end of file +{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5bae0c6d595a09fc327023f12a083cbf6b72c78526d8f8ae552e35887fc5ba664736f6c63430008180033","sourceMap":"203:14914:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:9;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5bae0c6d595a09fc327023f12a083cbf6b72c78526d8f8ae552e35887fc5ba664736f6c63430008180033","sourceMap":"203:14914:9:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","id":2684,"exportedSymbols":{"Math":[2683]},"nodeType":"SourceUnit","src":"103:15015:9","nodes":[{"id":1631,"nodeType":"PragmaDirective","src":"103:24:9","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2683,"nodeType":"ContractDefinition","src":"203:14914:9","nodes":[{"id":1635,"nodeType":"ErrorDefinition","src":"277:29:9","nodes":[],"documentation":{"id":1633,"nodeType":"StructuredDocumentation","src":"222:50:9","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"283:20:9","parameters":{"id":1634,"nodeType":"ParameterList","parameters":[],"src":"303:2:9"}},{"id":1640,"nodeType":"EnumDefinition","src":"312:169:9","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":1636,"name":"Floor","nameLocation":"336:5:9","nodeType":"EnumValue","src":"336:5:9"},{"id":1637,"name":"Ceil","nameLocation":"379:4:9","nodeType":"EnumValue","src":"379:4:9"},{"id":1638,"name":"Trunc","nameLocation":"421:5:9","nodeType":"EnumValue","src":"421:5:9"},{"id":1639,"name":"Expand","nameLocation":"451:6:9","nodeType":"EnumValue","src":"451:6:9"}],"name":"Rounding","nameLocation":"317:8:9"},{"id":1672,"nodeType":"FunctionDefinition","src":"585:216:9","nodes":[],"body":{"id":1671,"nodeType":"Block","src":"661:140:9","nodes":[],"statements":[{"id":1670,"nodeType":"UncheckedBlock","src":"671:124:9","statements":[{"assignments":[1653],"declarations":[{"constant":false,"id":1653,"mutability":"mutable","name":"c","nameLocation":"703:1:9","nodeType":"VariableDeclaration","scope":1670,"src":"695:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1652,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1657,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"707:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"711:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1658,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"730:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1659,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"734:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1665,"nodeType":"IfStatement","src":"726:28:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1651,"id":1664,"nodeType":"Return","src":"737:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1667,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"782:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1651,"id":1669,"nodeType":"Return","src":"768:16:9"}]}]},"documentation":{"id":1641,"nodeType":"StructuredDocumentation","src":"487:93:9","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:9","parameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1643,"mutability":"mutable","name":"a","nameLocation":"609:1:9","nodeType":"VariableDeclaration","scope":1672,"src":"601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1642,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"b","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1672,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:9"},"returnParameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"646:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1647,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"652:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1649,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1700,"nodeType":"FunctionDefinition","src":"908:189:9","nodes":[],"body":{"id":1699,"nodeType":"Block","src":"984:113:9","nodes":[],"statements":[{"id":1698,"nodeType":"UncheckedBlock","src":"994:97:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1022:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1685,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1026:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1691,"nodeType":"IfStatement","src":"1018:28:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1683,"id":1690,"nodeType":"Return","src":"1029:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1693,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1074:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1694,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1078:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1683,"id":1697,"nodeType":"Return","src":"1060:20:9"}]}]},"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"807:96:9","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:9","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"mutability":"mutable","name":"a","nameLocation":"932:1:9","nodeType":"VariableDeclaration","scope":1700,"src":"924:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"b","nameLocation":"943:1:9","nodeType":"VariableDeclaration","scope":1700,"src":"935:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1676,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:9"},"returnParameters":{"id":1683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1700,"src":"969:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1679,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1700,"src":"975:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1742,"nodeType":"FunctionDefinition","src":"1207:493:9","nodes":[],"body":{"id":1741,"nodeType":"Block","src":"1283:417:9","nodes":[],"statements":[{"id":1740,"nodeType":"UncheckedBlock","src":"1293:401:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1712,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1551:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1719,"nodeType":"IfStatement","src":"1547:28:9","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":1715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1711,"id":1718,"nodeType":"Return","src":"1559:16:9"}},{"assignments":[1721],"declarations":[{"constant":false,"id":1721,"mutability":"mutable","name":"c","nameLocation":"1597:1:9","nodeType":"VariableDeclaration","scope":1740,"src":"1589:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1725,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1722,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1601:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1723,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"1605:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1726,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"1624:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1727,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1628:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1729,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"1633:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1735,"nodeType":"IfStatement","src":"1620:33:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1711,"id":1734,"nodeType":"Return","src":"1636:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1737,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"1681:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1711,"id":1739,"nodeType":"Return","src":"1667:16:9"}]}]},"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"1103:99:9","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:9","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"a","nameLocation":"1231:1:9","nodeType":"VariableDeclaration","scope":1742,"src":"1223:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"b","nameLocation":"1242:1:9","nodeType":"VariableDeclaration","scope":1742,"src":"1234:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:9"},"returnParameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"1268:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1707,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"1274:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1709,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1770,"nodeType":"FunctionDefinition","src":"1811:190:9","nodes":[],"body":{"id":1769,"nodeType":"Block","src":"1887:114:9","nodes":[],"statements":[{"id":1768,"nodeType":"UncheckedBlock","src":"1897:98:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1754,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1925:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1761,"nodeType":"IfStatement","src":"1921:29:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1759,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1753,"id":1760,"nodeType":"Return","src":"1933:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"1978:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1764,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1982:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1766,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1753,"id":1767,"nodeType":"Return","src":"1964:20:9"}]}]},"documentation":{"id":1743,"nodeType":"StructuredDocumentation","src":"1706:100:9","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:9","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1745,"mutability":"mutable","name":"a","nameLocation":"1835:1:9","nodeType":"VariableDeclaration","scope":1770,"src":"1827:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"b","nameLocation":"1846:1:9","nodeType":"VariableDeclaration","scope":1770,"src":"1838:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:9"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1770,"src":"1872:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1749,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1770,"src":"1878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1751,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1798,"nodeType":"FunctionDefinition","src":"2122:190:9","nodes":[],"body":{"id":1797,"nodeType":"Block","src":"2198:114:9","nodes":[],"statements":[{"id":1796,"nodeType":"UncheckedBlock","src":"2208:98:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1782,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1789,"nodeType":"IfStatement","src":"2232:29:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1787,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1781,"id":1788,"nodeType":"Return","src":"2244:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1791,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"2289:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1792,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2293:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1781,"id":1795,"nodeType":"Return","src":"2275:20:9"}]}]},"documentation":{"id":1771,"nodeType":"StructuredDocumentation","src":"2007:110:9","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:9","parameters":{"id":1776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1773,"mutability":"mutable","name":"a","nameLocation":"2146:1:9","nodeType":"VariableDeclaration","scope":1798,"src":"2138:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1772,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1775,"mutability":"mutable","name":"b","nameLocation":"2157:1:9","nodeType":"VariableDeclaration","scope":1798,"src":"2149:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:9"},"returnParameters":{"id":1781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"2183:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1777,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"2189:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1816,"nodeType":"FunctionDefinition","src":"2382:104:9","nodes":[],"body":{"id":1815,"nodeType":"Block","src":"2449:37:9","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1808,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"2466:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1809,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"2470:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1812,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"2478:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:9","trueExpression":{"id":1811,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"2474:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1807,"id":1814,"nodeType":"Return","src":"2459:20:9"}]},"documentation":{"id":1799,"nodeType":"StructuredDocumentation","src":"2318:59:9","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:9","parameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"a","nameLocation":"2403:1:9","nodeType":"VariableDeclaration","scope":1816,"src":"2395:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1803,"mutability":"mutable","name":"b","nameLocation":"2414:1:9","nodeType":"VariableDeclaration","scope":1816,"src":"2406:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:9"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1816,"src":"2440:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1805,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1834,"nodeType":"FunctionDefinition","src":"2557:104:9","nodes":[],"body":{"id":1833,"nodeType":"Block","src":"2624:37:9","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1826,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"2641:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1827,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"2645:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1830,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"2653:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:9","trueExpression":{"id":1829,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"2649:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1825,"id":1832,"nodeType":"Return","src":"2634:20:9"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"2492:60:9","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:9","parameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1819,"mutability":"mutable","name":"a","nameLocation":"2578:1:9","nodeType":"VariableDeclaration","scope":1834,"src":"2570:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1821,"mutability":"mutable","name":"b","nameLocation":"2589:1:9","nodeType":"VariableDeclaration","scope":1834,"src":"2581:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1820,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:9"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1834,"src":"2615:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1857,"nodeType":"FunctionDefinition","src":"2774:153:9","nodes":[],"body":{"id":1856,"nodeType":"Block","src":"2845:82:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1844,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2900:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1845,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"2904:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1847,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1848,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1849,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"2914:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1843,"id":1855,"nodeType":"Return","src":"2892:28:9"}]},"documentation":{"id":1835,"nodeType":"StructuredDocumentation","src":"2667:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:9","parameters":{"id":1840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"a","nameLocation":"2799:1:9","nodeType":"VariableDeclaration","scope":1857,"src":"2791:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1836,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"b","nameLocation":"2810:1:9","nodeType":"VariableDeclaration","scope":1857,"src":"2802:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1838,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:9"},"returnParameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1857,"src":"2836:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1841,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1891,"nodeType":"FunctionDefinition","src":"3148:331:9","nodes":[],"body":{"id":1890,"nodeType":"Block","src":"3219:260:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"3229:127:9","trueBody":{"id":1874,"nodeType":"Block","src":"3241:115:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3340:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3344:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1866,"id":1873,"nodeType":"Return","src":"3333:12:9"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1876,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3444:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1880,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3458:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1884,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3467:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:9","trueExpression":{"hexValue":"30","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1866,"id":1889,"nodeType":"Return","src":"3437:35:9"}]},"documentation":{"id":1858,"nodeType":"StructuredDocumentation","src":"2933:210:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:9","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"mutability":"mutable","name":"a","nameLocation":"3173:1:9","nodeType":"VariableDeclaration","scope":1891,"src":"3165:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1859,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"b","nameLocation":"3184:1:9","nodeType":"VariableDeclaration","scope":1891,"src":"3176:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1861,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:9"},"returnParameters":{"id":1866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1891,"src":"3210:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1864,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2017,"nodeType":"FunctionDefinition","src":"3803:4116:9","nodes":[],"body":{"id":2016,"nodeType":"Block","src":"3901:4018:9","nodes":[],"statements":[{"id":2015,"nodeType":"UncheckedBlock","src":"3911:4002:9","statements":[{"assignments":[1904],"declarations":[{"constant":false,"id":1904,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:9","nodeType":"VariableDeclaration","scope":2015,"src":"4232:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1908,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4248:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1906,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"4252:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:9"},{"assignments":[1910],"declarations":[{"constant":false,"id":1910,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:9","nodeType":"VariableDeclaration","scope":2015,"src":"4312:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1911,"nodeType":"VariableDeclarationStatement","src":"4312:13:9"},{"AST":{"nativeSrc":"4392:122:9","nodeType":"YulBlock","src":"4392:122:9","statements":[{"nativeSrc":"4410:30:9","nodeType":"YulVariableDeclaration","src":"4410:30:9","value":{"arguments":[{"name":"x","nativeSrc":"4427:1:9","nodeType":"YulIdentifier","src":"4427:1:9"},{"name":"y","nativeSrc":"4430:1:9","nodeType":"YulIdentifier","src":"4430:1:9"},{"arguments":[{"kind":"number","nativeSrc":"4437:1:9","nodeType":"YulLiteral","src":"4437:1:9","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4433:3:9","nodeType":"YulIdentifier","src":"4433:3:9"},"nativeSrc":"4433:6:9","nodeType":"YulFunctionCall","src":"4433:6:9"}],"functionName":{"name":"mulmod","nativeSrc":"4420:6:9","nodeType":"YulIdentifier","src":"4420:6:9"},"nativeSrc":"4420:20:9","nodeType":"YulFunctionCall","src":"4420:20:9"},"variables":[{"name":"mm","nativeSrc":"4414:2:9","nodeType":"YulTypedName","src":"4414:2:9","type":""}]},{"nativeSrc":"4457:43:9","nodeType":"YulAssignment","src":"4457:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"4474:2:9","nodeType":"YulIdentifier","src":"4474:2:9"},{"name":"prod0","nativeSrc":"4478:5:9","nodeType":"YulIdentifier","src":"4478:5:9"}],"functionName":{"name":"sub","nativeSrc":"4470:3:9","nodeType":"YulIdentifier","src":"4470:3:9"},"nativeSrc":"4470:14:9","nodeType":"YulFunctionCall","src":"4470:14:9"},{"arguments":[{"name":"mm","nativeSrc":"4489:2:9","nodeType":"YulIdentifier","src":"4489:2:9"},{"name":"prod0","nativeSrc":"4493:5:9","nodeType":"YulIdentifier","src":"4493:5:9"}],"functionName":{"name":"lt","nativeSrc":"4486:2:9","nodeType":"YulIdentifier","src":"4486:2:9"},"nativeSrc":"4486:13:9","nodeType":"YulFunctionCall","src":"4486:13:9"}],"functionName":{"name":"sub","nativeSrc":"4466:3:9","nodeType":"YulIdentifier","src":"4466:3:9"},"nativeSrc":"4466:34:9","nodeType":"YulFunctionCall","src":"4466:34:9"},"variableNames":[{"name":"prod1","nativeSrc":"4457:5:9","nodeType":"YulIdentifier","src":"4457:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1904,"isOffset":false,"isSlot":false,"src":"4478:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"4493:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"4457:5:9","valueSize":1},{"declaration":1894,"isOffset":false,"isSlot":false,"src":"4427:1:9","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"4430:1:9","valueSize":1}],"id":1912,"nodeType":"InlineAssembly","src":"4383:131:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1913,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"4595:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1921,"nodeType":"IfStatement","src":"4591:368:9","trueBody":{"id":1920,"nodeType":"Block","src":"4607:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1916,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"4925:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1917,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"4933:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1902,"id":1919,"nodeType":"Return","src":"4918:26:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1922,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5065:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1923,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"5080:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1929,"nodeType":"IfStatement","src":"5061:88:9","trueBody":{"id":1928,"nodeType":"Block","src":"5087:62:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1925,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"5112:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1927,"nodeType":"RevertStatement","src":"5105:29:9"}]}},{"assignments":[1931],"declarations":[{"constant":false,"id":1931,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:9","nodeType":"VariableDeclaration","scope":2015,"src":"5404:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1932,"nodeType":"VariableDeclarationStatement","src":"5404:17:9"},{"AST":{"nativeSrc":"5444:291:9","nodeType":"YulBlock","src":"5444:291:9","statements":[{"nativeSrc":"5513:38:9","nodeType":"YulAssignment","src":"5513:38:9","value":{"arguments":[{"name":"x","nativeSrc":"5533:1:9","nodeType":"YulIdentifier","src":"5533:1:9"},{"name":"y","nativeSrc":"5536:1:9","nodeType":"YulIdentifier","src":"5536:1:9"},{"name":"denominator","nativeSrc":"5539:11:9","nodeType":"YulIdentifier","src":"5539:11:9"}],"functionName":{"name":"mulmod","nativeSrc":"5526:6:9","nodeType":"YulIdentifier","src":"5526:6:9"},"nativeSrc":"5526:25:9","nodeType":"YulFunctionCall","src":"5526:25:9"},"variableNames":[{"name":"remainder","nativeSrc":"5513:9:9","nodeType":"YulIdentifier","src":"5513:9:9"}]},{"nativeSrc":"5633:41:9","nodeType":"YulAssignment","src":"5633:41:9","value":{"arguments":[{"name":"prod1","nativeSrc":"5646:5:9","nodeType":"YulIdentifier","src":"5646:5:9"},{"arguments":[{"name":"remainder","nativeSrc":"5656:9:9","nodeType":"YulIdentifier","src":"5656:9:9"},{"name":"prod0","nativeSrc":"5667:5:9","nodeType":"YulIdentifier","src":"5667:5:9"}],"functionName":{"name":"gt","nativeSrc":"5653:2:9","nodeType":"YulIdentifier","src":"5653:2:9"},"nativeSrc":"5653:20:9","nodeType":"YulFunctionCall","src":"5653:20:9"}],"functionName":{"name":"sub","nativeSrc":"5642:3:9","nodeType":"YulIdentifier","src":"5642:3:9"},"nativeSrc":"5642:32:9","nodeType":"YulFunctionCall","src":"5642:32:9"},"variableNames":[{"name":"prod1","nativeSrc":"5633:5:9","nodeType":"YulIdentifier","src":"5633:5:9"}]},{"nativeSrc":"5691:30:9","nodeType":"YulAssignment","src":"5691:30:9","value":{"arguments":[{"name":"prod0","nativeSrc":"5704:5:9","nodeType":"YulIdentifier","src":"5704:5:9"},{"name":"remainder","nativeSrc":"5711:9:9","nodeType":"YulIdentifier","src":"5711:9:9"}],"functionName":{"name":"sub","nativeSrc":"5700:3:9","nodeType":"YulIdentifier","src":"5700:3:9"},"nativeSrc":"5700:21:9","nodeType":"YulFunctionCall","src":"5700:21:9"},"variableNames":[{"name":"prod0","nativeSrc":"5691:5:9","nodeType":"YulIdentifier","src":"5691:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1898,"isOffset":false,"isSlot":false,"src":"5539:11:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5667:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5691:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5704:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"5633:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"5646:5:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5513:9:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5656:9:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5711:9:9","valueSize":1},{"declaration":1894,"isOffset":false,"isSlot":false,"src":"5533:1:9","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"5536:1:9","valueSize":1}],"id":1933,"nodeType":"InlineAssembly","src":"5435:300:9"},{"assignments":[1935],"declarations":[{"constant":false,"id":1935,"mutability":"mutable","name":"twos","nameLocation":"5947:4:9","nodeType":"VariableDeclaration","scope":2015,"src":"5939:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1942,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1936,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5954:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1938,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5973:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:9"},{"AST":{"nativeSrc":"6008:362:9","nodeType":"YulBlock","src":"6008:362:9","statements":[{"nativeSrc":"6073:37:9","nodeType":"YulAssignment","src":"6073:37:9","value":{"arguments":[{"name":"denominator","nativeSrc":"6092:11:9","nodeType":"YulIdentifier","src":"6092:11:9"},{"name":"twos","nativeSrc":"6105:4:9","nodeType":"YulIdentifier","src":"6105:4:9"}],"functionName":{"name":"div","nativeSrc":"6088:3:9","nodeType":"YulIdentifier","src":"6088:3:9"},"nativeSrc":"6088:22:9","nodeType":"YulFunctionCall","src":"6088:22:9"},"variableNames":[{"name":"denominator","nativeSrc":"6073:11:9","nodeType":"YulIdentifier","src":"6073:11:9"}]},{"nativeSrc":"6177:25:9","nodeType":"YulAssignment","src":"6177:25:9","value":{"arguments":[{"name":"prod0","nativeSrc":"6190:5:9","nodeType":"YulIdentifier","src":"6190:5:9"},{"name":"twos","nativeSrc":"6197:4:9","nodeType":"YulIdentifier","src":"6197:4:9"}],"functionName":{"name":"div","nativeSrc":"6186:3:9","nodeType":"YulIdentifier","src":"6186:3:9"},"nativeSrc":"6186:16:9","nodeType":"YulFunctionCall","src":"6186:16:9"},"variableNames":[{"name":"prod0","nativeSrc":"6177:5:9","nodeType":"YulIdentifier","src":"6177:5:9"}]},{"nativeSrc":"6317:39:9","nodeType":"YulAssignment","src":"6317:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6337:1:9","nodeType":"YulLiteral","src":"6337:1:9","type":"","value":"0"},{"name":"twos","nativeSrc":"6340:4:9","nodeType":"YulIdentifier","src":"6340:4:9"}],"functionName":{"name":"sub","nativeSrc":"6333:3:9","nodeType":"YulIdentifier","src":"6333:3:9"},"nativeSrc":"6333:12:9","nodeType":"YulFunctionCall","src":"6333:12:9"},{"name":"twos","nativeSrc":"6347:4:9","nodeType":"YulIdentifier","src":"6347:4:9"}],"functionName":{"name":"div","nativeSrc":"6329:3:9","nodeType":"YulIdentifier","src":"6329:3:9"},"nativeSrc":"6329:23:9","nodeType":"YulFunctionCall","src":"6329:23:9"},{"kind":"number","nativeSrc":"6354:1:9","nodeType":"YulLiteral","src":"6354:1:9","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6325:3:9","nodeType":"YulIdentifier","src":"6325:3:9"},"nativeSrc":"6325:31:9","nodeType":"YulFunctionCall","src":"6325:31:9"},"variableNames":[{"name":"twos","nativeSrc":"6317:4:9","nodeType":"YulIdentifier","src":"6317:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1898,"isOffset":false,"isSlot":false,"src":"6073:11:9","valueSize":1},{"declaration":1898,"isOffset":false,"isSlot":false,"src":"6092:11:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"6177:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"6190:5:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6105:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6197:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6317:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6340:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6347:4:9","valueSize":1}],"id":1943,"nodeType":"InlineAssembly","src":"5999:371:9"},{"expression":{"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1944,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6436:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1945,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"6445:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1946,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"6453:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1949,"nodeType":"ExpressionStatement","src":"6436:21:9"},{"assignments":[1951],"declarations":[{"constant":false,"id":1951,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:9","nodeType":"VariableDeclaration","scope":2015,"src":"6775:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1950,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1958,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1953,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"6798:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1959,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7031:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1961,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7046:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1962,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7060:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"7031:36:9"},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1967,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7100:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1969,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7115:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1970,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7129:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1974,"nodeType":"ExpressionStatement","src":"7100:36:9"},{"expression":{"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1975,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7170:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1977,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7185:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1978,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7199:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1982,"nodeType":"ExpressionStatement","src":"7170:36:9"},{"expression":{"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1983,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7240:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1985,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7255:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1986,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7269:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1990,"nodeType":"ExpressionStatement","src":"7240:36:9"},{"expression":{"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1991,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7310:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1993,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7325:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1994,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7339:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1998,"nodeType":"ExpressionStatement","src":"7310:36:9"},{"expression":{"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1999,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7381:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7396:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2002,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7410:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2006,"nodeType":"ExpressionStatement","src":"7381:36:9"},{"expression":{"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7851:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2008,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7860:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2009,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7868:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2012,"nodeType":"ExpressionStatement","src":"7851:24:9"},{"expression":{"id":2013,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7896:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1902,"id":2014,"nodeType":"Return","src":"7889:13:9"}]}]},"documentation":{"id":1892,"nodeType":"StructuredDocumentation","src":"3485:313:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:9","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1894,"mutability":"mutable","name":"x","nameLocation":"3827:1:9","nodeType":"VariableDeclaration","scope":2017,"src":"3819:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1893,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1896,"mutability":"mutable","name":"y","nameLocation":"3838:1:9","nodeType":"VariableDeclaration","scope":2017,"src":"3830:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:9","nodeType":"VariableDeclaration","scope":2017,"src":"3841:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:9"},"returnParameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"result","nameLocation":"3893:6:9","nodeType":"VariableDeclaration","scope":2017,"src":"3885:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2060,"nodeType":"FunctionDefinition","src":"8051:302:9","nodes":[],"body":{"id":2059,"nodeType":"Block","src":"8161:192:9","nodes":[],"statements":[{"assignments":[2033],"declarations":[{"constant":false,"id":2033,"mutability":"mutable","name":"result","nameLocation":"8179:6:9","nodeType":"VariableDeclaration","scope":2059,"src":"8171:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2032,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2039,"initialValue":{"arguments":[{"id":2035,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"8195:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2036,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"8198:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2037,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"8201:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2034,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2017,2060],"referencedDeclaration":2017,"src":"8188:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2041,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"8244:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2040,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"8227:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2044,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"8264:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2045,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"8267:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2046,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"8270:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2043,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2056,"nodeType":"IfStatement","src":"8223:101:9","trueBody":{"id":2055,"nodeType":"Block","src":"8288:36:9","statements":[{"expression":{"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2051,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"8302:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2054,"nodeType":"ExpressionStatement","src":"8302:11:9"}]}},{"expression":{"id":2057,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"8340:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2031,"id":2058,"nodeType":"Return","src":"8333:13:9"}]},"documentation":{"id":2018,"nodeType":"StructuredDocumentation","src":"7925:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:9","parameters":{"id":2028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2020,"mutability":"mutable","name":"x","nameLocation":"8075:1:9","nodeType":"VariableDeclaration","scope":2060,"src":"8067:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2019,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"y","nameLocation":"8086:1:9","nodeType":"VariableDeclaration","scope":2060,"src":"8078:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2024,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:9","nodeType":"VariableDeclaration","scope":2060,"src":"8089:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:9","nodeType":"VariableDeclaration","scope":2060,"src":"8110:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2026,"nodeType":"UserDefinedTypeName","pathNode":{"id":2025,"name":"Rounding","nameLocations":["8110:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"8110:8:9"},"referencedDeclaration":1640,"src":"8110:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:9"},"returnParameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2060,"src":"8152:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2172,"nodeType":"FunctionDefinition","src":"8587:1642:9","nodes":[],"body":{"id":2171,"nodeType":"Block","src":"8644:1585:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2068,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"8658:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2074,"nodeType":"IfStatement","src":"8654:45:9","trueBody":{"id":2073,"nodeType":"Block","src":"8666:33:9","statements":[{"expression":{"hexValue":"30","id":2071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2067,"id":2072,"nodeType":"Return","src":"8680:8:9"}]}},{"assignments":[2076],"declarations":[{"constant":false,"id":2076,"mutability":"mutable","name":"result","nameLocation":"9386:6:9","nodeType":"VariableDeclaration","scope":2171,"src":"9378:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2085,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9406:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2078,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2339,2374],"referencedDeclaration":2339,"src":"9401:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:9"},{"id":2170,"nodeType":"UncheckedBlock","src":"9815:408:9","statements":[{"expression":{"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9839:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9849:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9858:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9862:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2092,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2096,"nodeType":"ExpressionStatement","src":"9839:35:9"},{"expression":{"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9888:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9898:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2099,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9907:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2100,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9911:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2107,"nodeType":"ExpressionStatement","src":"9888:35:9"},{"expression":{"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9937:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9947:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2110,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2111,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9960:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2118,"nodeType":"ExpressionStatement","src":"9937:35:9"},{"expression":{"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9986:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9996:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2121,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10005:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2122,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10009:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2129,"nodeType":"ExpressionStatement","src":"9986:35:9"},{"expression":{"id":2139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10035:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10045:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2132,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10054:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2133,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10058:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2136,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2140,"nodeType":"ExpressionStatement","src":"10035:35:9"},{"expression":{"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2141,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10084:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2142,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10094:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10103:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10107:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2147,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2151,"nodeType":"ExpressionStatement","src":"10084:35:9"},{"expression":{"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2152,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10133:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2153,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10143:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2154,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10152:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2155,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10156:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2162,"nodeType":"ExpressionStatement","src":"10133:35:9"},{"expression":{"arguments":[{"id":2164,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10193:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2165,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10201:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2166,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10205:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2163,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"10189:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2067,"id":2169,"nodeType":"Return","src":"10182:30:9"}]}]},"documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"8359:223:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:9","parameters":{"id":2064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"a","nameLocation":"8609:1:9","nodeType":"VariableDeclaration","scope":2172,"src":"8601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:9"},"returnParameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2172,"src":"8635:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2065,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2207,"nodeType":"FunctionDefinition","src":"10329:240:9","nodes":[],"body":{"id":2206,"nodeType":"Block","src":"10405:164:9","nodes":[],"statements":[{"id":2205,"nodeType":"UncheckedBlock","src":"10415:148:9","statements":[{"assignments":[2184],"declarations":[{"constant":false,"id":2184,"mutability":"mutable","name":"result","nameLocation":"10447:6:9","nodeType":"VariableDeclaration","scope":2205,"src":"10439:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2183,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2188,"initialValue":{"arguments":[{"id":2186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10461:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2185,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2172,2207],"referencedDeclaration":2172,"src":"10456:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2189,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2191,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"10511:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2190,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"10494:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2193,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10524:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2194,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10533:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2196,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10542:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:9","trueExpression":{"hexValue":"31","id":2199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2182,"id":2204,"nodeType":"Return","src":"10477:75:9"}]}]},"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"10235:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:9","parameters":{"id":2179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"a","nameLocation":"10351:1:9","nodeType":"VariableDeclaration","scope":2207,"src":"10343:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2178,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:9","nodeType":"VariableDeclaration","scope":2207,"src":"10354:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2177,"nodeType":"UserDefinedTypeName","pathNode":{"id":2176,"name":"Rounding","nameLocations":["10354:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"10354:8:9"},"referencedDeclaration":1640,"src":"10354:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:9"},"returnParameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2207,"src":"10396:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2180,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2339,"nodeType":"FunctionDefinition","src":"10699:983:9","nodes":[],"body":{"id":2338,"nodeType":"Block","src":"10760:922:9","nodes":[],"statements":[{"assignments":[2216],"declarations":[{"constant":false,"id":2216,"mutability":"mutable","name":"result","nameLocation":"10778:6:9","nodeType":"VariableDeclaration","scope":2338,"src":"10770:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2218,"initialValue":{"hexValue":"30","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:9"},{"id":2335,"nodeType":"UncheckedBlock","src":"10798:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2219,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10826:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2233,"nodeType":"IfStatement","src":"10822:99:9","trueBody":{"id":2232,"nodeType":"Block","src":"10844:77:9","statements":[{"expression":{"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10862:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2227,"nodeType":"ExpressionStatement","src":"10862:13:9"},{"expression":{"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"10893:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2231,"nodeType":"ExpressionStatement","src":"10893:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10938:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2248,"nodeType":"IfStatement","src":"10934:96:9","trueBody":{"id":2247,"nodeType":"Block","src":"10955:75:9","statements":[{"expression":{"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10973:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2242,"nodeType":"ExpressionStatement","src":"10973:12:9"},{"expression":{"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2243,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11003:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2246,"nodeType":"ExpressionStatement","src":"11003:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11047:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2263,"nodeType":"IfStatement","src":"11043:96:9","trueBody":{"id":2262,"nodeType":"Block","src":"11064:75:9","statements":[{"expression":{"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2254,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11082:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2257,"nodeType":"ExpressionStatement","src":"11082:12:9"},{"expression":{"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2258,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11112:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2261,"nodeType":"ExpressionStatement","src":"11112:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11156:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2278,"nodeType":"IfStatement","src":"11152:96:9","trueBody":{"id":2277,"nodeType":"Block","src":"11173:75:9","statements":[{"expression":{"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11191:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2272,"nodeType":"ExpressionStatement","src":"11191:12:9"},{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2273,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11221:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"11221:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11265:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2293,"nodeType":"IfStatement","src":"11261:93:9","trueBody":{"id":2292,"nodeType":"Block","src":"11281:73:9","statements":[{"expression":{"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11299:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2287,"nodeType":"ExpressionStatement","src":"11299:11:9"},{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2288,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11328:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"11328:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11371:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2308,"nodeType":"IfStatement","src":"11367:93:9","trueBody":{"id":2307,"nodeType":"Block","src":"11387:73:9","statements":[{"expression":{"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11405:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2302,"nodeType":"ExpressionStatement","src":"11405:11:9"},{"expression":{"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2303,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11434:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2306,"nodeType":"ExpressionStatement","src":"11434:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11477:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2323,"nodeType":"IfStatement","src":"11473:93:9","trueBody":{"id":2322,"nodeType":"Block","src":"11493:73:9","statements":[{"expression":{"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11511:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2317,"nodeType":"ExpressionStatement","src":"11511:11:9"},{"expression":{"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11540:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2321,"nodeType":"ExpressionStatement","src":"11540:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11583:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2334,"nodeType":"IfStatement","src":"11579:64:9","trueBody":{"id":2333,"nodeType":"Block","src":"11599:44:9","statements":[{"expression":{"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2329,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11617:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2332,"nodeType":"ExpressionStatement","src":"11617:11:9"}]}}]},{"expression":{"id":2336,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11669:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2214,"id":2337,"nodeType":"Return","src":"11662:13:9"}]},"documentation":{"id":2208,"nodeType":"StructuredDocumentation","src":"10575:119:9","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:9","parameters":{"id":2211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2210,"mutability":"mutable","name":"value","nameLocation":"10721:5:9","nodeType":"VariableDeclaration","scope":2339,"src":"10713:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:9"},"returnParameters":{"id":2214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2339,"src":"10751:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2374,"nodeType":"FunctionDefinition","src":"11835:248:9","nodes":[],"body":{"id":2373,"nodeType":"Block","src":"11915:168:9","nodes":[],"statements":[{"id":2372,"nodeType":"UncheckedBlock","src":"11925:152:9","statements":[{"assignments":[2351],"declarations":[{"constant":false,"id":2351,"mutability":"mutable","name":"result","nameLocation":"11957:6:9","nodeType":"VariableDeclaration","scope":2372,"src":"11949:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2355,"initialValue":{"arguments":[{"id":2353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"11971:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2352,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2339,2374],"referencedDeclaration":2339,"src":"11966:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2356,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"11998:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2358,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2345,"src":"12025:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2357,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"12008:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2361,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"12043:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"12052:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:9","trueExpression":{"hexValue":"31","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2349,"id":2371,"nodeType":"Return","src":"11991:75:9"}]}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"11688:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:9","parameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"value","nameLocation":"11857:5:9","nodeType":"VariableDeclaration","scope":2374,"src":"11849:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2341,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2345,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:9","nodeType":"VariableDeclaration","scope":2374,"src":"11864:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2344,"nodeType":"UserDefinedTypeName","pathNode":{"id":2343,"name":"Rounding","nameLocations":["11864:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"11864:8:9"},"referencedDeclaration":1640,"src":"11864:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:9"},"returnParameters":{"id":2349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"11906:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2347,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2503,"nodeType":"FunctionDefinition","src":"12214:916:9","nodes":[],"body":{"id":2502,"nodeType":"Block","src":"12276:854:9","nodes":[],"statements":[{"assignments":[2383],"declarations":[{"constant":false,"id":2383,"mutability":"mutable","name":"result","nameLocation":"12294:6:9","nodeType":"VariableDeclaration","scope":2502,"src":"12286:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2382,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2385,"initialValue":{"hexValue":"30","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:9"},{"id":2499,"nodeType":"UncheckedBlock","src":"12314:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12342:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2402,"nodeType":"IfStatement","src":"12338:103:9","trueBody":{"id":2401,"nodeType":"Block","src":"12361:80:9","statements":[{"expression":{"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12379:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2396,"nodeType":"ExpressionStatement","src":"12379:17:9"},{"expression":{"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2397,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12414:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2400,"nodeType":"ExpressionStatement","src":"12414:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12458:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2419,"nodeType":"IfStatement","src":"12454:103:9","trueBody":{"id":2418,"nodeType":"Block","src":"12477:80:9","statements":[{"expression":{"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12495:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2413,"nodeType":"ExpressionStatement","src":"12495:17:9"},{"expression":{"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2414,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12530:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2417,"nodeType":"ExpressionStatement","src":"12530:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12574:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2436,"nodeType":"IfStatement","src":"12570:103:9","trueBody":{"id":2435,"nodeType":"Block","src":"12593:80:9","statements":[{"expression":{"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12611:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2430,"nodeType":"ExpressionStatement","src":"12611:17:9"},{"expression":{"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12646:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2434,"nodeType":"ExpressionStatement","src":"12646:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12690:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2453,"nodeType":"IfStatement","src":"12686:100:9","trueBody":{"id":2452,"nodeType":"Block","src":"12708:78:9","statements":[{"expression":{"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12726:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2447,"nodeType":"ExpressionStatement","src":"12726:16:9"},{"expression":{"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12760:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2451,"nodeType":"ExpressionStatement","src":"12760:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12803:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"IfStatement","src":"12799:100:9","trueBody":{"id":2469,"nodeType":"Block","src":"12821:78:9","statements":[{"expression":{"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12839:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2464,"nodeType":"ExpressionStatement","src":"12839:16:9"},{"expression":{"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12873:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2468,"nodeType":"ExpressionStatement","src":"12873:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2487,"nodeType":"IfStatement","src":"12912:100:9","trueBody":{"id":2486,"nodeType":"Block","src":"12934:78:9","statements":[{"expression":{"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2481,"nodeType":"ExpressionStatement","src":"12952:16:9"},{"expression":{"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12986:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2485,"nodeType":"ExpressionStatement","src":"12986:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"13029:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2498,"nodeType":"IfStatement","src":"13025:66:9","trueBody":{"id":2497,"nodeType":"Block","src":"13047:44:9","statements":[{"expression":{"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2493,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"13065:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2496,"nodeType":"ExpressionStatement","src":"13065:11:9"}]}}]},{"expression":{"id":2500,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"13117:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2381,"id":2501,"nodeType":"Return","src":"13110:13:9"}]},"documentation":{"id":2375,"nodeType":"StructuredDocumentation","src":"12089:120:9","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:9","parameters":{"id":2378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"value","nameLocation":"12237:5:9","nodeType":"VariableDeclaration","scope":2503,"src":"12229:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2376,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:9"},"returnParameters":{"id":2381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2503,"src":"12267:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"13284:251:9","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"13365:170:9","nodes":[],"statements":[{"id":2536,"nodeType":"UncheckedBlock","src":"13375:154:9","statements":[{"assignments":[2515],"declarations":[{"constant":false,"id":2515,"mutability":"mutable","name":"result","nameLocation":"13407:6:9","nodeType":"VariableDeclaration","scope":2536,"src":"13399:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2514,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2519,"initialValue":{"arguments":[{"id":2517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"13422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2516,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2503,2538],"referencedDeclaration":2503,"src":"13416:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2520,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13449:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2522,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2509,"src":"13476:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2521,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"13459:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2525,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13495:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"13504:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:9","trueExpression":{"hexValue":"31","id":2530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2533,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2513,"id":2535,"nodeType":"Return","src":"13442:76:9"}]}]},"documentation":{"id":2504,"nodeType":"StructuredDocumentation","src":"13136:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:9","parameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2506,"mutability":"mutable","name":"value","nameLocation":"13307:5:9","nodeType":"VariableDeclaration","scope":2538,"src":"13299:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2505,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2509,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:9","nodeType":"VariableDeclaration","scope":2538,"src":"13314:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2508,"nodeType":"UserDefinedTypeName","pathNode":{"id":2507,"name":"Rounding","nameLocations":["13314:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"13314:8:9"},"referencedDeclaration":1640,"src":"13314:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:9"},"returnParameters":{"id":2513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2538,"src":"13356:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2511,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2625,"nodeType":"FunctionDefinition","src":"13792:663:9","nodes":[],"body":{"id":2624,"nodeType":"Block","src":"13855:600:9","nodes":[],"statements":[{"assignments":[2547],"declarations":[{"constant":false,"id":2547,"mutability":"mutable","name":"result","nameLocation":"13873:6:9","nodeType":"VariableDeclaration","scope":2624,"src":"13865:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2549,"initialValue":{"hexValue":"30","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:9"},{"id":2621,"nodeType":"UncheckedBlock","src":"13893:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"13921:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2564,"nodeType":"IfStatement","src":"13917:98:9","trueBody":{"id":2563,"nodeType":"Block","src":"13939:76:9","statements":[{"expression":{"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"13957:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2558,"nodeType":"ExpressionStatement","src":"13957:13:9"},{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"13988:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2562,"nodeType":"ExpressionStatement","src":"13988:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14032:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2579,"nodeType":"IfStatement","src":"14028:95:9","trueBody":{"id":2578,"nodeType":"Block","src":"14049:74:9","statements":[{"expression":{"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2573,"nodeType":"ExpressionStatement","src":"14067:12:9"},{"expression":{"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2574,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2577,"nodeType":"ExpressionStatement","src":"14097:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14140:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2594,"nodeType":"IfStatement","src":"14136:95:9","trueBody":{"id":2593,"nodeType":"Block","src":"14157:74:9","statements":[{"expression":{"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2588,"nodeType":"ExpressionStatement","src":"14175:12:9"},{"expression":{"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2589,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14205:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2592,"nodeType":"ExpressionStatement","src":"14205:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14248:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2609,"nodeType":"IfStatement","src":"14244:95:9","trueBody":{"id":2608,"nodeType":"Block","src":"14265:74:9","statements":[{"expression":{"id":2602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2603,"nodeType":"ExpressionStatement","src":"14283:12:9"},{"expression":{"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2604,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14313:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2607,"nodeType":"ExpressionStatement","src":"14313:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14356:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2620,"nodeType":"IfStatement","src":"14352:64:9","trueBody":{"id":2619,"nodeType":"Block","src":"14372:44:9","statements":[{"expression":{"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2615,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14390:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2618,"nodeType":"ExpressionStatement","src":"14390:11:9"}]}}]},{"expression":{"id":2622,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14442:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2545,"id":2623,"nodeType":"Return","src":"14435:13:9"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"13541:246:9","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:9","parameters":{"id":2542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"value","nameLocation":"13816:5:9","nodeType":"VariableDeclaration","scope":2625,"src":"13808:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:9"},"returnParameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2625,"src":"13846:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2543,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2663,"nodeType":"FunctionDefinition","src":"14610:259:9","nodes":[],"body":{"id":2662,"nodeType":"Block","src":"14692:177:9","nodes":[],"statements":[{"id":2661,"nodeType":"UncheckedBlock","src":"14702:161:9","statements":[{"assignments":[2637],"declarations":[{"constant":false,"id":2637,"mutability":"mutable","name":"result","nameLocation":"14734:6:9","nodeType":"VariableDeclaration","scope":2661,"src":"14726:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2636,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2641,"initialValue":{"arguments":[{"id":2639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"14750:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2638,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2625,2663],"referencedDeclaration":2625,"src":"14743:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2642,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"14777:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2644,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"14804:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2643,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"14787:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"14823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"14838:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:9","trueExpression":{"hexValue":"31","id":2655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2658,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2635,"id":2660,"nodeType":"Return","src":"14770:82:9"}]}]},"documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"14461:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:9","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"value","nameLocation":"14634:5:9","nodeType":"VariableDeclaration","scope":2663,"src":"14626:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2627,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:9","nodeType":"VariableDeclaration","scope":2663,"src":"14641:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2630,"nodeType":"UserDefinedTypeName","pathNode":{"id":2629,"name":"Rounding","nameLocations":["14641:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"14641:8:9"},"referencedDeclaration":1640,"src":"14641:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:9"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2663,"src":"14683:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2633,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2682,"nodeType":"FunctionDefinition","src":"14993:122:9","nodes":[],"body":{"id":2681,"nodeType":"Block","src":"15067:48:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2674,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"15090:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2672,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:9","typeDescriptions":{}}},"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2671,"id":2680,"nodeType":"Return","src":"15077:31:9"}]},"documentation":{"id":2664,"nodeType":"StructuredDocumentation","src":"14875:113:9","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:9","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:9","nodeType":"VariableDeclaration","scope":2682,"src":"15019:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2666,"nodeType":"UserDefinedTypeName","pathNode":{"id":2665,"name":"Rounding","nameLocations":["15019:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"15019:8:9"},"referencedDeclaration":1640,"src":"15019:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:9"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2682,"src":"15061:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2669,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1632,"nodeType":"StructuredDocumentation","src":"129:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[2683],"name":"Math","nameLocation":"211:4:9","scope":2684,"usedErrors":[1635],"usedEvents":[]}],"license":"MIT"},"id":9} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json b/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json index daf03b1..8af103c 100644 --- a/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json +++ b/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220654312976530f653e45d8a00ceaeffb19fe4101cee01e133fc83b837cd05941764736f6c63430008170033","sourceMap":"216:1047:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:10;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220654312976530f653e45d8a00ceaeffb19fe4101cee01e133fc83b837cd05941764736f6c63430008170033","sourceMap":"216:1047:10:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":"SignedMath"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","id":2789,"exportedSymbols":{"SignedMath":[2788]},"nodeType":"SourceUnit","src":"109:1155:10","nodes":[{"id":2685,"nodeType":"PragmaDirective","src":"109:24:10","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2788,"nodeType":"ContractDefinition","src":"216:1047:10","nodes":[{"id":2704,"nodeType":"FunctionDefinition","src":"312:101:10","nodes":[],"body":{"id":2703,"nodeType":"Block","src":"376:37:10","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2696,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"393:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2697,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"397:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"393:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2700,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"405:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"393:13:10","trueExpression":{"id":2699,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"401:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2695,"id":2702,"nodeType":"Return","src":"386:20:10"}]},"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"241:66:10","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"321:3:10","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"mutability":"mutable","name":"a","nameLocation":"332:1:10","nodeType":"VariableDeclaration","scope":2704,"src":"325:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"325:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"b","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2704,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2690,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"324:20:10"},"returnParameters":{"id":2695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2704,"src":"368:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2693,"name":"int256","nodeType":"ElementaryTypeName","src":"368:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"367:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2722,"nodeType":"FunctionDefinition","src":"491:101:10","nodes":[],"body":{"id":2721,"nodeType":"Block","src":"555:37:10","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2714,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"572:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2715,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"576:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"572:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2718,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"584:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"572:13:10","trueExpression":{"id":2717,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"580:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2713,"id":2720,"nodeType":"Return","src":"565:20:10"}]},"documentation":{"id":2705,"nodeType":"StructuredDocumentation","src":"419:67:10","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"500:3:10","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2707,"mutability":"mutable","name":"a","nameLocation":"511:1:10","nodeType":"VariableDeclaration","scope":2722,"src":"504:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2706,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2709,"mutability":"mutable","name":"b","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2722,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2722,"src":"547:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2711,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2766,"nodeType":"FunctionDefinition","src":"729:230:10","nodes":[],"body":{"id":2765,"nodeType":"Block","src":"797:162:10","nodes":[],"statements":[{"assignments":[2733],"declarations":[{"constant":false,"id":2733,"mutability":"mutable","name":"x","nameLocation":"866:1:10","nodeType":"VariableDeclaration","scope":2765,"src":"859:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2732,"name":"int256","nodeType":"ElementaryTypeName","src":"859:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2746,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2734,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"871:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2735,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"875:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2738,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"882:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2739,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"886:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"882:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"881:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"881:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2744,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"859:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2747,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"911:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2752,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"931:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2750,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:10","typeDescriptions":{}}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"923:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"916:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2748,"name":"int256","nodeType":"ElementaryTypeName","src":"916:6:10","typeDescriptions":{}}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2757,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"945:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2758,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"949:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"945:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"944:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"916:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"915:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"911:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2731,"id":2764,"nodeType":"Return","src":"904:48:10"}]},"documentation":{"id":2723,"nodeType":"StructuredDocumentation","src":"598:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"738:7:10","parameters":{"id":2728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2725,"mutability":"mutable","name":"a","nameLocation":"753:1:10","nodeType":"VariableDeclaration","scope":2766,"src":"746:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2724,"name":"int256","nodeType":"ElementaryTypeName","src":"746:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2727,"mutability":"mutable","name":"b","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2766,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2726,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"745:20:10"},"returnParameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2766,"src":"789:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2729,"name":"int256","nodeType":"ElementaryTypeName","src":"789:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"788:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2787,"nodeType":"FunctionDefinition","src":"1048:213:10","nodes":[],"body":{"id":2786,"nodeType":"Block","src":"1103:158:10","nodes":[],"statements":[{"id":2785,"nodeType":"UncheckedBlock","src":"1113:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2776,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1228:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1241:2:10","subExpression":{"id":2780,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1242:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1228:15:10","trueExpression":{"id":2779,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1237:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2774,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:10","typeDescriptions":{}}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2773,"id":2784,"nodeType":"Return","src":"1213:31:10"}]}]},"documentation":{"id":2767,"nodeType":"StructuredDocumentation","src":"965:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1057:3:10","parameters":{"id":2770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2769,"mutability":"mutable","name":"n","nameLocation":"1068:1:10","nodeType":"VariableDeclaration","scope":2787,"src":"1061:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2768,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1060:10:10"},"returnParameters":{"id":2773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2787,"src":"1094:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":2686,"nodeType":"StructuredDocumentation","src":"135:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[2788],"name":"SignedMath","nameLocation":"224:10:10","scope":2789,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":10} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e990105101f18a69007efc204cd518e83c746a6834b8b60848acba29717811464736f6c63430008180033","sourceMap":"216:1047:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:10;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e990105101f18a69007efc204cd518e83c746a6834b8b60848acba29717811464736f6c63430008180033","sourceMap":"216:1047:10:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","id":2789,"exportedSymbols":{"SignedMath":[2788]},"nodeType":"SourceUnit","src":"109:1155:10","nodes":[{"id":2685,"nodeType":"PragmaDirective","src":"109:24:10","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2788,"nodeType":"ContractDefinition","src":"216:1047:10","nodes":[{"id":2704,"nodeType":"FunctionDefinition","src":"312:101:10","nodes":[],"body":{"id":2703,"nodeType":"Block","src":"376:37:10","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2696,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"393:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2697,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"397:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"393:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2700,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"405:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"393:13:10","trueExpression":{"id":2699,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"401:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2695,"id":2702,"nodeType":"Return","src":"386:20:10"}]},"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"241:66:10","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"321:3:10","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"mutability":"mutable","name":"a","nameLocation":"332:1:10","nodeType":"VariableDeclaration","scope":2704,"src":"325:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"325:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"b","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2704,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2690,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"324:20:10"},"returnParameters":{"id":2695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2704,"src":"368:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2693,"name":"int256","nodeType":"ElementaryTypeName","src":"368:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"367:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2722,"nodeType":"FunctionDefinition","src":"491:101:10","nodes":[],"body":{"id":2721,"nodeType":"Block","src":"555:37:10","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2714,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"572:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2715,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"576:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"572:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2718,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"584:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"572:13:10","trueExpression":{"id":2717,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"580:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2713,"id":2720,"nodeType":"Return","src":"565:20:10"}]},"documentation":{"id":2705,"nodeType":"StructuredDocumentation","src":"419:67:10","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"500:3:10","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2707,"mutability":"mutable","name":"a","nameLocation":"511:1:10","nodeType":"VariableDeclaration","scope":2722,"src":"504:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2706,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2709,"mutability":"mutable","name":"b","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2722,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2722,"src":"547:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2711,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2766,"nodeType":"FunctionDefinition","src":"729:230:10","nodes":[],"body":{"id":2765,"nodeType":"Block","src":"797:162:10","nodes":[],"statements":[{"assignments":[2733],"declarations":[{"constant":false,"id":2733,"mutability":"mutable","name":"x","nameLocation":"866:1:10","nodeType":"VariableDeclaration","scope":2765,"src":"859:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2732,"name":"int256","nodeType":"ElementaryTypeName","src":"859:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2746,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2734,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"871:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2735,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"875:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2738,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"882:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2739,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"886:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"882:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"881:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"881:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2744,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"859:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2747,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"911:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2752,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"931:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2750,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:10","typeDescriptions":{}}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"923:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"916:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2748,"name":"int256","nodeType":"ElementaryTypeName","src":"916:6:10","typeDescriptions":{}}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2757,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"945:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2758,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"949:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"945:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"944:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"916:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"915:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"911:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2731,"id":2764,"nodeType":"Return","src":"904:48:10"}]},"documentation":{"id":2723,"nodeType":"StructuredDocumentation","src":"598:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"738:7:10","parameters":{"id":2728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2725,"mutability":"mutable","name":"a","nameLocation":"753:1:10","nodeType":"VariableDeclaration","scope":2766,"src":"746:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2724,"name":"int256","nodeType":"ElementaryTypeName","src":"746:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2727,"mutability":"mutable","name":"b","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2766,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2726,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"745:20:10"},"returnParameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2766,"src":"789:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2729,"name":"int256","nodeType":"ElementaryTypeName","src":"789:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"788:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2787,"nodeType":"FunctionDefinition","src":"1048:213:10","nodes":[],"body":{"id":2786,"nodeType":"Block","src":"1103:158:10","nodes":[],"statements":[{"id":2785,"nodeType":"UncheckedBlock","src":"1113:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2776,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1228:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1241:2:10","subExpression":{"id":2780,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1242:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1228:15:10","trueExpression":{"id":2779,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1237:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2774,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:10","typeDescriptions":{}}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2773,"id":2784,"nodeType":"Return","src":"1213:31:10"}]}]},"documentation":{"id":2767,"nodeType":"StructuredDocumentation","src":"965:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1057:3:10","parameters":{"id":2770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2769,"mutability":"mutable","name":"n","nameLocation":"1068:1:10","nodeType":"VariableDeclaration","scope":2787,"src":"1061:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2768,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1060:10:10"},"returnParameters":{"id":2773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2787,"src":"1094:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":2686,"nodeType":"StructuredDocumentation","src":"135:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[2788],"name":"SignedMath","nameLocation":"224:10:10","scope":2789,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":10} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json b/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json index 427f4ff..9d1c462 100644 --- a/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json +++ b/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6784d40652813d24d3a8e4c09b7ca02f511659d7ce902391dd706adda7cbb2464736f6c63430008170033","sourceMap":"251:2847:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:6;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6784d40652813d24d3a8e4c09b7ca02f511659d7ce902391dd706adda7cbb2464736f6c63430008170033","sourceMap":"251:2847:6:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":"Strings"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","id":1594,"exportedSymbols":{"Math":[2683],"SignedMath":[2788],"Strings":[1593]},"nodeType":"SourceUnit","src":"101:2998:6","nodes":[{"id":1340,"nodeType":"PragmaDirective","src":"101:24:6","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1342,"nodeType":"ImportDirective","src":"127:37:6","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"./math/Math.sol","nameLocation":"-1:-1:-1","scope":1594,"sourceUnit":2684,"symbolAliases":[{"foreign":{"id":1341,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"135:4:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1344,"nodeType":"ImportDirective","src":"165:49:6","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","nameLocation":"-1:-1:-1","scope":1594,"sourceUnit":2789,"symbolAliases":[{"foreign":{"id":1343,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"173:10:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1593,"nodeType":"ContractDefinition","src":"251:2847:6","nodes":[{"id":1348,"nodeType":"VariableDeclaration","src":"273:56:6","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"298:10:6","scope":1593,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1346,"name":"bytes16","nodeType":"ElementaryTypeName","src":"273:7:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1351,"nodeType":"VariableDeclaration","src":"335:42:6","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"358:14:6","scope":1593,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1349,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"375:2:6","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1358,"nodeType":"ErrorDefinition","src":"470:66:6","nodes":[],"documentation":{"id":1352,"nodeType":"StructuredDocumentation","src":"384:81:6","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"476:28:6","parameters":{"id":1357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"mutability":"mutable","name":"value","nameLocation":"513:5:6","nodeType":"VariableDeclaration","scope":1358,"src":"505:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1356,"mutability":"mutable","name":"length","nameLocation":"528:6:6","nodeType":"VariableDeclaration","scope":1358,"src":"520:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:31:6"}},{"id":1406,"nodeType":"FunctionDefinition","src":"637:698:6","nodes":[],"body":{"id":1405,"nodeType":"Block","src":"708:627:6","nodes":[],"statements":[{"id":1404,"nodeType":"UncheckedBlock","src":"718:611:6","statements":[{"assignments":[1367],"declarations":[{"constant":false,"id":1367,"mutability":"mutable","name":"length","nameLocation":"750:6:6","nodeType":"VariableDeclaration","scope":1404,"src":"742:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1366,"name":"uint256","nodeType":"ElementaryTypeName","src":"742:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1374,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"770:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1368,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"759:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2683_$","typeString":"type(library Math)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"764:5:6","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2503,"src":"759:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"759:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"742:38:6"},{"assignments":[1376],"declarations":[{"constant":false,"id":1376,"mutability":"mutable","name":"buffer","nameLocation":"808:6:6","nodeType":"VariableDeclaration","scope":1404,"src":"794:20:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1375,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1381,"initialValue":{"arguments":[{"id":1379,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"828:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"817:10:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1377,"name":"string","nodeType":"ElementaryTypeName","src":"821:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"794:41:6"},{"assignments":[1383],"declarations":[{"constant":false,"id":1383,"mutability":"mutable","name":"ptr","nameLocation":"857:3:6","nodeType":"VariableDeclaration","scope":1404,"src":"849:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1382,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1384,"nodeType":"VariableDeclarationStatement","src":"849:11:6"},{"AST":{"nativeSrc":"930:67:6","nodeType":"YulBlock","src":"930:67:6","statements":[{"nativeSrc":"948:35:6","nodeType":"YulAssignment","src":"948:35:6","value":{"arguments":[{"name":"buffer","nativeSrc":"959:6:6","nodeType":"YulIdentifier","src":"959:6:6"},{"arguments":[{"kind":"number","nativeSrc":"971:2:6","nodeType":"YulLiteral","src":"971:2:6","type":"","value":"32"},{"name":"length","nativeSrc":"975:6:6","nodeType":"YulIdentifier","src":"975:6:6"}],"functionName":{"name":"add","nativeSrc":"967:3:6","nodeType":"YulIdentifier","src":"967:3:6"},"nativeSrc":"967:15:6","nodeType":"YulFunctionCall","src":"967:15:6"}],"functionName":{"name":"add","nativeSrc":"955:3:6","nodeType":"YulIdentifier","src":"955:3:6"},"nativeSrc":"955:28:6","nodeType":"YulFunctionCall","src":"955:28:6"},"variableNames":[{"name":"ptr","nativeSrc":"948:3:6","nodeType":"YulIdentifier","src":"948:3:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1376,"isOffset":false,"isSlot":false,"src":"959:6:6","valueSize":1},{"declaration":1367,"isOffset":false,"isSlot":false,"src":"975:6:6","valueSize":1},{"declaration":1383,"isOffset":false,"isSlot":false,"src":"948:3:6","valueSize":1}],"id":1385,"nodeType":"InlineAssembly","src":"921:76:6"},{"body":{"id":1400,"nodeType":"Block","src":"1023:269:6","statements":[{"expression":{"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1041:5:6","subExpression":{"id":1387,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"1041:3:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1389,"nodeType":"ExpressionStatement","src":"1041:5:6"},{"AST":{"nativeSrc":"1124:86:6","nodeType":"YulBlock","src":"1124:86:6","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1154:3:6","nodeType":"YulIdentifier","src":"1154:3:6"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1168:5:6","nodeType":"YulIdentifier","src":"1168:5:6"},{"kind":"number","nativeSrc":"1175:2:6","nodeType":"YulLiteral","src":"1175:2:6","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1164:3:6","nodeType":"YulIdentifier","src":"1164:3:6"},"nativeSrc":"1164:14:6","nodeType":"YulFunctionCall","src":"1164:14:6"},{"name":"HEX_DIGITS","nativeSrc":"1180:10:6","nodeType":"YulIdentifier","src":"1180:10:6"}],"functionName":{"name":"byte","nativeSrc":"1159:4:6","nodeType":"YulIdentifier","src":"1159:4:6"},"nativeSrc":"1159:32:6","nodeType":"YulFunctionCall","src":"1159:32:6"}],"functionName":{"name":"mstore8","nativeSrc":"1146:7:6","nodeType":"YulIdentifier","src":"1146:7:6"},"nativeSrc":"1146:46:6","nodeType":"YulFunctionCall","src":"1146:46:6"},"nativeSrc":"1146:46:6","nodeType":"YulExpressionStatement","src":"1146:46:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1348,"isOffset":false,"isSlot":false,"src":"1180:10:6","valueSize":1},{"declaration":1383,"isOffset":false,"isSlot":false,"src":"1154:3:6","valueSize":1},{"declaration":1361,"isOffset":false,"isSlot":false,"src":"1168:5:6","valueSize":1}],"id":1390,"nodeType":"InlineAssembly","src":"1115:95:6"},{"expression":{"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"1227:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1227:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1394,"nodeType":"ExpressionStatement","src":"1227:11:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"1260:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1269:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1260:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1399,"nodeType":"IfStatement","src":"1256:21:6","trueBody":{"id":1398,"nodeType":"Break","src":"1272:5:6"}}]},"condition":{"hexValue":"74727565","id":1386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1401,"nodeType":"WhileStatement","src":"1010:282:6"},{"expression":{"id":1402,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"1312:6:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1365,"id":1403,"nodeType":"Return","src":"1305:13:6"}]}]},"documentation":{"id":1359,"nodeType":"StructuredDocumentation","src":"542:90:6","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"646:8:6","parameters":{"id":1362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1361,"mutability":"mutable","name":"value","nameLocation":"663:5:6","nodeType":"VariableDeclaration","scope":1406,"src":"655:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1360,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:15:6"},"returnParameters":{"id":1365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1406,"src":"693:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1363,"name":"string","nodeType":"ElementaryTypeName","src":"693:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"692:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1432,"nodeType":"FunctionDefinition","src":"1435:168:6","nodes":[],"body":{"id":1431,"nodeType":"Block","src":"1511:92:6","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"1542:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1550:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1542:9:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1560:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1542:20:6","trueExpression":{"hexValue":"2d","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1554:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"1588:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1424,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"1573:10:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$2788_$","typeString":"type(library SignedMath)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:3:6","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2787,"src":"1573:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1423,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1406,"src":"1564:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1414,"name":"string","nodeType":"ElementaryTypeName","src":"1528:6:6","typeDescriptions":{}}},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:6:6","memberName":"concat","nodeType":"MemberAccess","src":"1528:13:6","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:68:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1413,"id":1430,"nodeType":"Return","src":"1521:75:6"}]},"documentation":{"id":1407,"nodeType":"StructuredDocumentation","src":"1341:89:6","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1444:14:6","parameters":{"id":1410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1409,"mutability":"mutable","name":"value","nameLocation":"1466:5:6","nodeType":"VariableDeclaration","scope":1432,"src":"1459:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1408,"name":"int256","nodeType":"ElementaryTypeName","src":"1459:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1458:14:6"},"returnParameters":{"id":1413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1432,"src":"1496:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1411,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1452,"nodeType":"FunctionDefinition","src":"1708:174:6","nodes":[],"body":{"id":1451,"nodeType":"Block","src":"1782:100:6","nodes":[],"statements":[{"id":1450,"nodeType":"UncheckedBlock","src":"1792:84:6","statements":[{"expression":{"arguments":[{"id":1441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"1835:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"1854:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1442,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"1842:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2683_$","typeString":"type(library Math)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1847:6:6","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"1842:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1842:22:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1440,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1452,1535,1555],"referencedDeclaration":1535,"src":"1823:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1439,"id":1449,"nodeType":"Return","src":"1816:49:6"}]}]},"documentation":{"id":1433,"nodeType":"StructuredDocumentation","src":"1609:94:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1717:11:6","parameters":{"id":1436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"value","nameLocation":"1737:5:6","nodeType":"VariableDeclaration","scope":1452,"src":"1729:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:15:6"},"returnParameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1452,"src":"1767:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1437,"name":"string","nodeType":"ElementaryTypeName","src":"1767:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1535,"nodeType":"FunctionDefinition","src":"2005:525:6","nodes":[],"body":{"id":1534,"nodeType":"Block","src":"2095:435:6","nodes":[],"statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"localValue","nameLocation":"2113:10:6","nodeType":"VariableDeclaration","scope":1534,"src":"2105:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2105:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1465,"initialValue":{"id":1464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2126:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2105:26:6"},{"assignments":[1467],"declarations":[{"constant":false,"id":1467,"mutability":"mutable","name":"buffer","nameLocation":"2154:6:6","nodeType":"VariableDeclaration","scope":1534,"src":"2141:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1466,"name":"bytes","nodeType":"ElementaryTypeName","src":"2141:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1476,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2173:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1471,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2177:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2173:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2163:9:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1468,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2141:47:6"},{"expression":{"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1477,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2198:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1479,"indexExpression":{"hexValue":"30","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2198:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2210:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2198:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1482,"nodeType":"ExpressionStatement","src":"2198:15:6"},{"expression":{"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1483,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2223:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1485,"indexExpression":{"hexValue":"31","id":1484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2223:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2235:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2223:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1488,"nodeType":"ExpressionStatement","src":"2223:15:6"},{"body":{"id":1517,"nodeType":"Block","src":"2293:95:6","statements":[{"expression":{"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1503,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2307:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1505,"indexExpression":{"id":1504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2314:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2307:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1506,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2319:10:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1510,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1507,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2330:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2343:3:6","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2330:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2319:28:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2307:40:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1512,"nodeType":"ExpressionStatement","src":"2307:40:6"},{"expression":{"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1513,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2361:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2361:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1516,"nodeType":"ExpressionStatement","src":"2361:16:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1497,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2281:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2285:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2281:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1518,"initializationExpression":{"assignments":[1490],"declarations":[{"constant":false,"id":1490,"mutability":"mutable","name":"i","nameLocation":"2261:1:6","nodeType":"VariableDeclaration","scope":1518,"src":"2253:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1496,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2265:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1492,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2269:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2265:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2265:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2253:26:6"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2288:3:6","subExpression":{"id":1500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2290:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1502,"nodeType":"ExpressionStatement","src":"2288:3:6"},"nodeType":"ForStatement","src":"2248:140:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1519,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2401:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2401:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1528,"nodeType":"IfStatement","src":"2397:96:6","trueBody":{"id":1527,"nodeType":"Block","src":"2418:75:6","statements":[{"errorCall":{"arguments":[{"id":1523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2468:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1524,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2475:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1522,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"2439:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:43:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1526,"nodeType":"RevertStatement","src":"2432:50:6"}]}},{"expression":{"arguments":[{"id":1531,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2516:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1529,"name":"string","nodeType":"ElementaryTypeName","src":"2509:6:6","typeDescriptions":{}}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1461,"id":1533,"nodeType":"Return","src":"2502:21:6"}]},"documentation":{"id":1453,"nodeType":"StructuredDocumentation","src":"1888:112:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2014:11:6","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1455,"mutability":"mutable","name":"value","nameLocation":"2034:5:6","nodeType":"VariableDeclaration","scope":1535,"src":"2026:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1454,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1457,"mutability":"mutable","name":"length","nameLocation":"2049:6:6","nodeType":"VariableDeclaration","scope":1535,"src":"2041:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:31:6"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1535,"src":"2080:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1459,"name":"string","nodeType":"ElementaryTypeName","src":"2080:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2079:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1555,"nodeType":"FunctionDefinition","src":"2689:148:6","nodes":[],"body":{"id":1554,"nodeType":"Block","src":"2762:75:6","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1548,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"2807:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1546,"name":"uint160","nodeType":"ElementaryTypeName","src":"2799:7:6","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2791:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1544,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:6","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1551,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"2815:14:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1543,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1452,1535,1555],"referencedDeclaration":1535,"src":"2779:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1542,"id":1553,"nodeType":"Return","src":"2772:58:6"}]},"documentation":{"id":1536,"nodeType":"StructuredDocumentation","src":"2536:148:6","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2698:11:6","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1538,"mutability":"mutable","name":"addr","nameLocation":"2718:4:6","nodeType":"VariableDeclaration","scope":1555,"src":"2710:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1537,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2709:14:6"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1555,"src":"2747:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1540,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1592,"nodeType":"FunctionDefinition","src":"2914:182:6","nodes":[],"body":{"id":1591,"nodeType":"Block","src":"2992:104:6","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1567,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"3015:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1565,"name":"bytes","nodeType":"ElementaryTypeName","src":"3009:5:6","typeDescriptions":{}}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3018:6:6","memberName":"length","nodeType":"MemberAccess","src":"3009:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1572,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3034:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3028:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1570,"name":"bytes","nodeType":"ElementaryTypeName","src":"3028:5:6","typeDescriptions":{}}},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3037:6:6","memberName":"length","nodeType":"MemberAccess","src":"3028:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:34:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1579,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"3063:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1577,"name":"bytes","nodeType":"ElementaryTypeName","src":"3057:5:6","typeDescriptions":{}}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1576,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3047:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1585,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3086:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1583,"name":"bytes","nodeType":"ElementaryTypeName","src":"3080:5:6","typeDescriptions":{}}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1582,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3070:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3047:42:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3009:80:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1564,"id":1590,"nodeType":"Return","src":"3002:87:6"}]},"documentation":{"id":1556,"nodeType":"StructuredDocumentation","src":"2843:66:6","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2923:5:6","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"a","nameLocation":"2943:1:6","nodeType":"VariableDeclaration","scope":1592,"src":"2929:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1557,"name":"string","nodeType":"ElementaryTypeName","src":"2929:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"b","nameLocation":"2960:1:6","nodeType":"VariableDeclaration","scope":1592,"src":"2946:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1559,"name":"string","nodeType":"ElementaryTypeName","src":"2946:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2928:34:6"},"returnParameters":{"id":1564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1592,"src":"2986:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1562,"name":"bool","nodeType":"ElementaryTypeName","src":"2986:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2985:6:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1345,"nodeType":"StructuredDocumentation","src":"216:34:6","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1593],"name":"Strings","nameLocation":"259:7:6","scope":1594,"usedErrors":[1358],"usedEvents":[]}],"license":"MIT"},"id":6} \ No newline at end of file +{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220baa7f5dda1238bf9b50b5ca5c540917f2b09d0b35fad546a730befe74b593ff064736f6c63430008180033","sourceMap":"251:2847:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:6;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220baa7f5dda1238bf9b50b5ca5c540917f2b09d0b35fad546a730befe74b593ff064736f6c63430008180033","sourceMap":"251:2847:6:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","id":1594,"exportedSymbols":{"Math":[2683],"SignedMath":[2788],"Strings":[1593]},"nodeType":"SourceUnit","src":"101:2998:6","nodes":[{"id":1340,"nodeType":"PragmaDirective","src":"101:24:6","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1342,"nodeType":"ImportDirective","src":"127:37:6","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"./math/Math.sol","nameLocation":"-1:-1:-1","scope":1594,"sourceUnit":2684,"symbolAliases":[{"foreign":{"id":1341,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"135:4:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1344,"nodeType":"ImportDirective","src":"165:49:6","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","nameLocation":"-1:-1:-1","scope":1594,"sourceUnit":2789,"symbolAliases":[{"foreign":{"id":1343,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"173:10:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1593,"nodeType":"ContractDefinition","src":"251:2847:6","nodes":[{"id":1348,"nodeType":"VariableDeclaration","src":"273:56:6","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"298:10:6","scope":1593,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1346,"name":"bytes16","nodeType":"ElementaryTypeName","src":"273:7:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1351,"nodeType":"VariableDeclaration","src":"335:42:6","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"358:14:6","scope":1593,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1349,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"375:2:6","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1358,"nodeType":"ErrorDefinition","src":"470:66:6","nodes":[],"documentation":{"id":1352,"nodeType":"StructuredDocumentation","src":"384:81:6","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"476:28:6","parameters":{"id":1357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"mutability":"mutable","name":"value","nameLocation":"513:5:6","nodeType":"VariableDeclaration","scope":1358,"src":"505:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1356,"mutability":"mutable","name":"length","nameLocation":"528:6:6","nodeType":"VariableDeclaration","scope":1358,"src":"520:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:31:6"}},{"id":1406,"nodeType":"FunctionDefinition","src":"637:698:6","nodes":[],"body":{"id":1405,"nodeType":"Block","src":"708:627:6","nodes":[],"statements":[{"id":1404,"nodeType":"UncheckedBlock","src":"718:611:6","statements":[{"assignments":[1367],"declarations":[{"constant":false,"id":1367,"mutability":"mutable","name":"length","nameLocation":"750:6:6","nodeType":"VariableDeclaration","scope":1404,"src":"742:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1366,"name":"uint256","nodeType":"ElementaryTypeName","src":"742:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1374,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"770:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1368,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"759:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2683_$","typeString":"type(library Math)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"764:5:6","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2503,"src":"759:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"759:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"742:38:6"},{"assignments":[1376],"declarations":[{"constant":false,"id":1376,"mutability":"mutable","name":"buffer","nameLocation":"808:6:6","nodeType":"VariableDeclaration","scope":1404,"src":"794:20:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1375,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1381,"initialValue":{"arguments":[{"id":1379,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"828:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"817:10:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1377,"name":"string","nodeType":"ElementaryTypeName","src":"821:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"794:41:6"},{"assignments":[1383],"declarations":[{"constant":false,"id":1383,"mutability":"mutable","name":"ptr","nameLocation":"857:3:6","nodeType":"VariableDeclaration","scope":1404,"src":"849:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1382,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1384,"nodeType":"VariableDeclarationStatement","src":"849:11:6"},{"AST":{"nativeSrc":"930:67:6","nodeType":"YulBlock","src":"930:67:6","statements":[{"nativeSrc":"948:35:6","nodeType":"YulAssignment","src":"948:35:6","value":{"arguments":[{"name":"buffer","nativeSrc":"959:6:6","nodeType":"YulIdentifier","src":"959:6:6"},{"arguments":[{"kind":"number","nativeSrc":"971:2:6","nodeType":"YulLiteral","src":"971:2:6","type":"","value":"32"},{"name":"length","nativeSrc":"975:6:6","nodeType":"YulIdentifier","src":"975:6:6"}],"functionName":{"name":"add","nativeSrc":"967:3:6","nodeType":"YulIdentifier","src":"967:3:6"},"nativeSrc":"967:15:6","nodeType":"YulFunctionCall","src":"967:15:6"}],"functionName":{"name":"add","nativeSrc":"955:3:6","nodeType":"YulIdentifier","src":"955:3:6"},"nativeSrc":"955:28:6","nodeType":"YulFunctionCall","src":"955:28:6"},"variableNames":[{"name":"ptr","nativeSrc":"948:3:6","nodeType":"YulIdentifier","src":"948:3:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1376,"isOffset":false,"isSlot":false,"src":"959:6:6","valueSize":1},{"declaration":1367,"isOffset":false,"isSlot":false,"src":"975:6:6","valueSize":1},{"declaration":1383,"isOffset":false,"isSlot":false,"src":"948:3:6","valueSize":1}],"id":1385,"nodeType":"InlineAssembly","src":"921:76:6"},{"body":{"id":1400,"nodeType":"Block","src":"1023:269:6","statements":[{"expression":{"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1041:5:6","subExpression":{"id":1387,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"1041:3:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1389,"nodeType":"ExpressionStatement","src":"1041:5:6"},{"AST":{"nativeSrc":"1124:86:6","nodeType":"YulBlock","src":"1124:86:6","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1154:3:6","nodeType":"YulIdentifier","src":"1154:3:6"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1168:5:6","nodeType":"YulIdentifier","src":"1168:5:6"},{"kind":"number","nativeSrc":"1175:2:6","nodeType":"YulLiteral","src":"1175:2:6","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1164:3:6","nodeType":"YulIdentifier","src":"1164:3:6"},"nativeSrc":"1164:14:6","nodeType":"YulFunctionCall","src":"1164:14:6"},{"name":"HEX_DIGITS","nativeSrc":"1180:10:6","nodeType":"YulIdentifier","src":"1180:10:6"}],"functionName":{"name":"byte","nativeSrc":"1159:4:6","nodeType":"YulIdentifier","src":"1159:4:6"},"nativeSrc":"1159:32:6","nodeType":"YulFunctionCall","src":"1159:32:6"}],"functionName":{"name":"mstore8","nativeSrc":"1146:7:6","nodeType":"YulIdentifier","src":"1146:7:6"},"nativeSrc":"1146:46:6","nodeType":"YulFunctionCall","src":"1146:46:6"},"nativeSrc":"1146:46:6","nodeType":"YulExpressionStatement","src":"1146:46:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1348,"isOffset":false,"isSlot":false,"src":"1180:10:6","valueSize":1},{"declaration":1383,"isOffset":false,"isSlot":false,"src":"1154:3:6","valueSize":1},{"declaration":1361,"isOffset":false,"isSlot":false,"src":"1168:5:6","valueSize":1}],"id":1390,"nodeType":"InlineAssembly","src":"1115:95:6"},{"expression":{"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"1227:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1227:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1394,"nodeType":"ExpressionStatement","src":"1227:11:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"1260:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1269:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1260:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1399,"nodeType":"IfStatement","src":"1256:21:6","trueBody":{"id":1398,"nodeType":"Break","src":"1272:5:6"}}]},"condition":{"hexValue":"74727565","id":1386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1401,"nodeType":"WhileStatement","src":"1010:282:6"},{"expression":{"id":1402,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"1312:6:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1365,"id":1403,"nodeType":"Return","src":"1305:13:6"}]}]},"documentation":{"id":1359,"nodeType":"StructuredDocumentation","src":"542:90:6","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"646:8:6","parameters":{"id":1362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1361,"mutability":"mutable","name":"value","nameLocation":"663:5:6","nodeType":"VariableDeclaration","scope":1406,"src":"655:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1360,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:15:6"},"returnParameters":{"id":1365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1406,"src":"693:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1363,"name":"string","nodeType":"ElementaryTypeName","src":"693:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"692:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1432,"nodeType":"FunctionDefinition","src":"1435:168:6","nodes":[],"body":{"id":1431,"nodeType":"Block","src":"1511:92:6","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"1542:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1550:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1542:9:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1560:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1542:20:6","trueExpression":{"hexValue":"2d","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1554:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"1588:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1424,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"1573:10:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$2788_$","typeString":"type(library SignedMath)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:3:6","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2787,"src":"1573:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1423,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1406,"src":"1564:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1414,"name":"string","nodeType":"ElementaryTypeName","src":"1528:6:6","typeDescriptions":{}}},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:6:6","memberName":"concat","nodeType":"MemberAccess","src":"1528:13:6","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:68:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1413,"id":1430,"nodeType":"Return","src":"1521:75:6"}]},"documentation":{"id":1407,"nodeType":"StructuredDocumentation","src":"1341:89:6","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1444:14:6","parameters":{"id":1410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1409,"mutability":"mutable","name":"value","nameLocation":"1466:5:6","nodeType":"VariableDeclaration","scope":1432,"src":"1459:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1408,"name":"int256","nodeType":"ElementaryTypeName","src":"1459:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1458:14:6"},"returnParameters":{"id":1413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1432,"src":"1496:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1411,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1452,"nodeType":"FunctionDefinition","src":"1708:174:6","nodes":[],"body":{"id":1451,"nodeType":"Block","src":"1782:100:6","nodes":[],"statements":[{"id":1450,"nodeType":"UncheckedBlock","src":"1792:84:6","statements":[{"expression":{"arguments":[{"id":1441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"1835:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"1854:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1442,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"1842:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2683_$","typeString":"type(library Math)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1847:6:6","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"1842:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1842:22:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1440,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1452,1535,1555],"referencedDeclaration":1535,"src":"1823:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1439,"id":1449,"nodeType":"Return","src":"1816:49:6"}]}]},"documentation":{"id":1433,"nodeType":"StructuredDocumentation","src":"1609:94:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1717:11:6","parameters":{"id":1436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"value","nameLocation":"1737:5:6","nodeType":"VariableDeclaration","scope":1452,"src":"1729:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:15:6"},"returnParameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1452,"src":"1767:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1437,"name":"string","nodeType":"ElementaryTypeName","src":"1767:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1535,"nodeType":"FunctionDefinition","src":"2005:525:6","nodes":[],"body":{"id":1534,"nodeType":"Block","src":"2095:435:6","nodes":[],"statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"localValue","nameLocation":"2113:10:6","nodeType":"VariableDeclaration","scope":1534,"src":"2105:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2105:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1465,"initialValue":{"id":1464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2126:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2105:26:6"},{"assignments":[1467],"declarations":[{"constant":false,"id":1467,"mutability":"mutable","name":"buffer","nameLocation":"2154:6:6","nodeType":"VariableDeclaration","scope":1534,"src":"2141:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1466,"name":"bytes","nodeType":"ElementaryTypeName","src":"2141:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1476,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2173:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1471,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2177:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2173:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2163:9:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1468,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2141:47:6"},{"expression":{"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1477,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2198:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1479,"indexExpression":{"hexValue":"30","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2198:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2210:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2198:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1482,"nodeType":"ExpressionStatement","src":"2198:15:6"},{"expression":{"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1483,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2223:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1485,"indexExpression":{"hexValue":"31","id":1484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2223:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2235:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2223:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1488,"nodeType":"ExpressionStatement","src":"2223:15:6"},{"body":{"id":1517,"nodeType":"Block","src":"2293:95:6","statements":[{"expression":{"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1503,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2307:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1505,"indexExpression":{"id":1504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2314:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2307:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1506,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2319:10:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1510,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1507,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2330:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2343:3:6","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2330:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2319:28:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2307:40:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1512,"nodeType":"ExpressionStatement","src":"2307:40:6"},{"expression":{"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1513,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2361:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2361:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1516,"nodeType":"ExpressionStatement","src":"2361:16:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1497,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2281:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2285:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2281:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1518,"initializationExpression":{"assignments":[1490],"declarations":[{"constant":false,"id":1490,"mutability":"mutable","name":"i","nameLocation":"2261:1:6","nodeType":"VariableDeclaration","scope":1518,"src":"2253:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1496,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2265:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1492,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2269:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2265:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2265:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2253:26:6"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2288:3:6","subExpression":{"id":1500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2290:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1502,"nodeType":"ExpressionStatement","src":"2288:3:6"},"nodeType":"ForStatement","src":"2248:140:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1519,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2401:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2401:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1528,"nodeType":"IfStatement","src":"2397:96:6","trueBody":{"id":1527,"nodeType":"Block","src":"2418:75:6","statements":[{"errorCall":{"arguments":[{"id":1523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2468:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1524,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2475:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1522,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"2439:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:43:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1526,"nodeType":"RevertStatement","src":"2432:50:6"}]}},{"expression":{"arguments":[{"id":1531,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2516:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1529,"name":"string","nodeType":"ElementaryTypeName","src":"2509:6:6","typeDescriptions":{}}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1461,"id":1533,"nodeType":"Return","src":"2502:21:6"}]},"documentation":{"id":1453,"nodeType":"StructuredDocumentation","src":"1888:112:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2014:11:6","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1455,"mutability":"mutable","name":"value","nameLocation":"2034:5:6","nodeType":"VariableDeclaration","scope":1535,"src":"2026:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1454,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1457,"mutability":"mutable","name":"length","nameLocation":"2049:6:6","nodeType":"VariableDeclaration","scope":1535,"src":"2041:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:31:6"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1535,"src":"2080:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1459,"name":"string","nodeType":"ElementaryTypeName","src":"2080:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2079:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1555,"nodeType":"FunctionDefinition","src":"2689:148:6","nodes":[],"body":{"id":1554,"nodeType":"Block","src":"2762:75:6","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1548,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"2807:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1546,"name":"uint160","nodeType":"ElementaryTypeName","src":"2799:7:6","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2791:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1544,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:6","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1551,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"2815:14:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1543,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1452,1535,1555],"referencedDeclaration":1535,"src":"2779:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1542,"id":1553,"nodeType":"Return","src":"2772:58:6"}]},"documentation":{"id":1536,"nodeType":"StructuredDocumentation","src":"2536:148:6","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2698:11:6","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1538,"mutability":"mutable","name":"addr","nameLocation":"2718:4:6","nodeType":"VariableDeclaration","scope":1555,"src":"2710:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1537,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2709:14:6"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1555,"src":"2747:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1540,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1592,"nodeType":"FunctionDefinition","src":"2914:182:6","nodes":[],"body":{"id":1591,"nodeType":"Block","src":"2992:104:6","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1567,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"3015:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1565,"name":"bytes","nodeType":"ElementaryTypeName","src":"3009:5:6","typeDescriptions":{}}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3018:6:6","memberName":"length","nodeType":"MemberAccess","src":"3009:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1572,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3034:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3028:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1570,"name":"bytes","nodeType":"ElementaryTypeName","src":"3028:5:6","typeDescriptions":{}}},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3037:6:6","memberName":"length","nodeType":"MemberAccess","src":"3028:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:34:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1579,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"3063:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1577,"name":"bytes","nodeType":"ElementaryTypeName","src":"3057:5:6","typeDescriptions":{}}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1576,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3047:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1585,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3086:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1583,"name":"bytes","nodeType":"ElementaryTypeName","src":"3080:5:6","typeDescriptions":{}}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1582,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3070:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3047:42:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3009:80:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1564,"id":1590,"nodeType":"Return","src":"3002:87:6"}]},"documentation":{"id":1556,"nodeType":"StructuredDocumentation","src":"2843:66:6","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2923:5:6","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"a","nameLocation":"2943:1:6","nodeType":"VariableDeclaration","scope":1592,"src":"2929:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1557,"name":"string","nodeType":"ElementaryTypeName","src":"2929:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"b","nameLocation":"2960:1:6","nodeType":"VariableDeclaration","scope":1592,"src":"2946:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1559,"name":"string","nodeType":"ElementaryTypeName","src":"2946:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2928:34:6"},"returnParameters":{"id":1564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1592,"src":"2986:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1562,"name":"bool","nodeType":"ElementaryTypeName","src":"2986:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2985:6:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1345,"nodeType":"StructuredDocumentation","src":"216:34:6","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1593],"name":"Strings","nameLocation":"259:7:6","scope":1594,"usedErrors":[1358],"usedEvents":[]}],"license":"MIT"},"id":6} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json index a3b9d93..1cbbc92 100644 --- a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json +++ b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json index 86595af..976f69a 100644 --- a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json +++ b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json index 3f32f14..8e04809 100644 --- a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json +++ b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.23+commit.f704f362"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol b/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol index 9db28f5..b79fea7 100644 --- a/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol +++ b/examples/on-chain_mnist/contracts/src/MNISTNFT_Flattened.sol @@ -1505,14 +1505,14 @@ contract MNISTNFT is ERC721, IERC721Receiver { constructor() ERC721("MNISTNFT", "MNIST") {} - function mint(uint256 tokenId) public { + function mint(uint256 tokenId, address sendTo) public { if (tokenExists[tokenId]) { tokenId = tokenId * 10; } tokenExists[tokenId] = true; - _safeMint(msg.sender, tokenId); + _safeMint(sendTo, tokenId); } // Implement the onERC721Received function diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 5cda465..d9e492b 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -80,42 +80,39 @@ def get_model_data(self): """Get proof data from GCP and save it as a class attribute""" client = DeploymentsClient(API_HOST) - # uri = get_deployment_uri(self.model_id, self.version_id) - # # get this from CLI - # proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" + uri = get_deployment_uri(self.model_id, self.version_id) + # get this from CLI + proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" - # time.sleep(3) - # logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") - # deployment_id = get_deployment_id(self.model_id, self.version_id) - # timeout = time.time() + 8000 - # print(f"Deployment ID: {deployment_id}") - # print(f"Request ID: {self.request_id}") - # print(f"Model ID: {self.model_id}") - # print(f"Version ID: {self.version_id}") - # print(f"Framework: {self.framework}") - - # while True: - # now = time.time() - # if now > timeout: - # print("Proof retrieval timed out") - # raise TimeoutError("Proof retrieval timed out") - # try: - # proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) - # print(f"Proof: {proof.json(exclude_unset=True)}") - # break # Exit the loop if proof is retrieved successfully - # except requests.exceptions.HTTPError as e: - # print("Proof retrieval failing, sleeping for 5 seconds") - # print(e) - # time.sleep(5) + time.sleep(3) + logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") + deployment_id = get_deployment_id(self.model_id, self.version_id) + timeout = time.time() + 8000 + print(f"Deployment ID: {deployment_id}") + print(f"Request ID: {self.request_id}") + print(f"Model ID: {self.model_id}") + print(f"Version ID: {self.version_id}") + print(f"Framework: {self.framework}") + while True: + now = time.time() + if now > timeout: + print("Proof retrieval timed out") + raise TimeoutError("Proof retrieval timed out") + try: + proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) + print(f"Proof: {proof.json(exclude_unset=True)}") + break # Exit the loop if proof is retrieved successfully + except requests.exceptions.HTTPError as e: + print("Proof retrieval failing, sleeping for 5 seconds") + print(e) + time.sleep(5) + # Save the proof to a file - # proof_file = "zk.proof" - # content = client.download_proof(self.model_id, self.version_id, deployment_id, self.request_id) - # with open(proof_file, "wb") as f: - # f.write(content) proof_file = "zk.proof" - with open(proof_file, "rb") as f: - content = f.read() + content = client.download_proof(self.model_id, self.version_id, deployment_id, self.request_id) + with open(proof_file, "wb") as f: + f.write(content) return (content, os.path.abspath(proof_file)) @@ -152,75 +149,6 @@ def _generate_calldata(self, contract_address: Address, chain_id, function_name, print("Calldata: ", calldata) return calldata - # For now, we will just use the local ABI until Etherscan is supported - # async def _generate_calldata(self, contract_address: Address, chain_id, function_name, parameters): - # """ - # Generate calldata for calling a smart contract function - - # Args: - # abi_path (str): Path to JSON ABI for the contract - # function_name (str): Name of contract function to call - # parameters (list): Arguments to pass to the function - - # Returns: - # str: Hex string of calldata - # """ - - # web3 = Web3() - - # # TODO: Add support for other chains - # if chain_id == 1: - # # Ethereum Mainnet - # etherscan_url = "https://api.etherscan.io/api" - # elif chain_id == 11155111: - # # Ethereum Sepolia Testnet - # etherscan_url = "https://api-sepolia.etherscan.io/api" - # elif chain_id == 5: - # # Ethereum Goerli Testnet - # etherscan_url = "https://api-goerli.etherscan.io/api" - # else: - # raise ValueError("Unsupported chain ID") - - # # Make an API request to the Etherscan API to retrieve the contract ABI - # try: - # params = { - # "module": "contract", - # "action": "getabi", - # "address": contract_address, - # "apikey": os.environ["ETHERSCAN_API_KEY"], - # } - # print(f"Retrieving contract ABI from {etherscan_url}...") - # print(f"Params: {params}") - # response = requests.get(etherscan_url, params=params) - # response.raise_for_status() # Raise an exception for 4xx or 5xx status codes - # response_json = response.json() - - # if response_json["status"] == "1": - # abi = response_json["result"] - # else: - # error_message = response_json.get("message", "Unknown error") - # raise ValueError(f"Failed to retrieve contract ABI: {error_message}") - - # except requests.exceptions.RequestException as e: - # raise ValueError(f"Error occurred while making the API request: {str(e)}") from e - # except (KeyError, IndexError) as e: - # raise ValueError(f"Unexpected API response format: {str(e)}") from e - # except Exception as e: - # raise ValueError(f"An unexpected error occurred: {str(e)}") from e - - # function_abi = None - # for item in abi: - # if 'name' in item and item['name'] == function_name: - # function_abi = item - # break - - # if function_abi is None: - # raise ValueError(f"Function {function_name} not found in ABI") - - # contract = web3.eth.contract(address=contract_address, abi=abi) - # calldata = contract.encodeABI(function_name, args=parameters) - # return calldata - def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): address = account.address @@ -252,22 +180,20 @@ async def verify(self, proof_path): Returns: bool: True if proof is valid """ - # model_id = self.model_id - # version_id = self.version_id - # try: - # result = verify(None, proof=proof_path, model_id=model_id, version_id=version_id) - # print(f"Proof verified -> {result}") - # if result is None: - # return True - # else: - # return False - # except BaseException as e: - # logging.error("An error occurred when verifying") - # print(e) - # return False - - return True - + model_id = self.model_id + version_id = self.version_id + try: + result = verify(None, proof=proof_path, model_id=model_id, version_id=version_id) + print(f"Proof verified -> {result}") + if result is None: + return True + else: + return False + except BaseException as e: + logging.error("An error occurred when verifying") + print(e) + return False + async def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): """ Transmit: Verify the proof signature (so we know that the account owner signed off on the proof verification), verify the proof, then send the transaction to the contract. @@ -346,14 +272,16 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: print(f"Error sending transaction: {str(e)}") return None try: - receipt = await asyncio.wait_for(asyncio.to_thread(web3.eth.wait_for_transaction_receipt, tx_hash), timeout=300) + receipt = web3.eth.wait_for_transaction_receipt(tx_hash, timeout=300) + print("made it.") return receipt - except asyncio.TimeoutError: - print("Transaction receipt retrieval timed out after 300 seconds.") - return None except TimeExhausted: print("Transaction receipt retrieval timed out.") return None + + except asyncio.TimeoutError: + print("Transaction receipt retrieval timed out after 300 seconds.") + return None except ValueError as e: print(f"Error encoding transaction: {e}") From 2eef258e140f2fc4aea4a4a8c453b062a4d65b38 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 9 Mar 2024 18:13:59 +0000 Subject: [PATCH 12/27] fix: add value param to txn --- .../contracts/cache/solidity-files-cache.json | 2 +- .../out/MotemaPool_flattened.sol/Context.json | 1 + .../MotemaPool_flattened.sol/MotemaPool.json | 1 + .../out/MotemaPool_flattened.sol/Ownable.json | 1 + .../contracts/src/MotemaPool_flattened.sol | 157 ++++++++++++++++++ giza_actions/agent.py | 8 +- pyproject.toml | 3 +- 7 files changed, 166 insertions(+), 7 deletions(-) create mode 100644 examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json create mode 100644 examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json create mode 100644 examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json create mode 100644 examples/on-chain_mnist/contracts/src/MotemaPool_flattened.sol diff --git a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json index 3cb4522..e39ec61 100644 --- a/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json +++ b/examples/on-chain_mnist/contracts/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709895315352,"contentHash":"088c5eb5ca245afe32dd7541234a1a89","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}},"src/MNISTNFT_Flattened.sol":{"lastModificationDate":1709900949508,"contentHash":"0d6f7a84481fdae72d47055d4d2a63b0","sourceName":"src/MNISTNFT_Flattened.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Context.json"},"ERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/ERC165.json"},"ERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/ERC721.json"},"IERC1155Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC1155Errors.json"},"IERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC165.json"},"IERC20Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC20Errors.json"},"IERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721.json"},"IERC721Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Errors.json"},"IERC721Metadata":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Metadata.json"},"IERC721Receiver":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Receiver.json"},"MNISTNFT":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/MNISTNFT.json"},"Math":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Math.json"},"SignedMath":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/SignedMath.json"},"Strings":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Strings.json"}}}}} \ No newline at end of file +{"_format":"ethers-rs-sol-cache-3","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1708426908942,"contentHash":"4aefc698f77ecbace7f401257dfe182d","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC1155Errors.json"},"IERC20Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC20Errors.json"},"IERC721Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"draft-IERC6093.sol/IERC721Errors.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"lastModificationDate":1708426908947,"contentHash":"1e64e2ad597dc5b2dae11346502baad4","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"ERC721.sol/ERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"lastModificationDate":1708426908948,"contentHash":"5df8fdb527e563085847cad29e3c5f2e","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721.sol/IERC721.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1708426908948,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721Receiver.sol/IERC721Receiver.json"}}},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"lastModificationDate":1708426908406,"contentHash":"12c206f185cb951213799561fdcaa40d","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC721Metadata":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC721Metadata.sol/IERC721Metadata.json"}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1708426908407,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Context.sol/Context.json"}}},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1708426908408,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Strings.sol/Strings.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1708426908950,"contentHash":"6a55c353946e471d9792965d06208295","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"ERC165.sol/ERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1708426908951,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"IERC165.sol/IERC165.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1708426908951,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"Math.sol/Math.json"}}},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1708426908951,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"SignedMath.sol/SignedMath.json"}}},"src/MNISTNFT.sol":{"lastModificationDate":1709895315352,"contentHash":"088c5eb5ca245afe32dd7541234a1a89","sourceName":"src/MNISTNFT.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.0","artifacts":{"MNISTNFT":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT.sol/MNISTNFT.json"}}},"src/MNISTNFT_Flattened.sol":{"lastModificationDate":1709900949508,"contentHash":"0d6f7a84481fdae72d47055d4d2a63b0","sourceName":"src/MNISTNFT_Flattened.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Context.json"},"ERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/ERC165.json"},"ERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/ERC721.json"},"IERC1155Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC1155Errors.json"},"IERC165":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC165.json"},"IERC20Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC20Errors.json"},"IERC721":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721.json"},"IERC721Errors":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Errors.json"},"IERC721Metadata":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Metadata.json"},"IERC721Receiver":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/IERC721Receiver.json"},"MNISTNFT":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/MNISTNFT.json"},"Math":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Math.json"},"SignedMath":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/SignedMath.json"},"Strings":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MNISTNFT_Flattened.sol/Strings.json"}}},"src/MotemaPool_flattened.sol":{"lastModificationDate":1709982077866,"contentHash":"7ceaf1d409a9a23db549ac457d07171b","sourceName":"src/MotemaPool_flattened.sol","solcConfig":{"settings":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","libraries":{}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Context":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MotemaPool_flattened.sol/Context.json"},"MotemaPool":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MotemaPool_flattened.sol/MotemaPool.json"},"Ownable":{"0.8.24+commit.e11b9ed9.Darwin.appleclang":"MotemaPool_flattened.sol/Ownable.json"}}}}} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json new file mode 100644 index 0000000..7862c13 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MotemaPool_flattened.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MotemaPool_flattened.sol\":{\"keccak256\":\"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947\",\"dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MotemaPool_flattened.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"src/MotemaPool_flattened.sol":{"keccak256":"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445","urls":["bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947","dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MotemaPool_flattened.sol","id":224,"exportedSymbols":{"Context":[29],"MotemaPool":[223],"Ownable":[174]},"nodeType":"SourceUnit","src":"161:4432:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"161:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":29,"nodeType":"ContractDefinition","src":"684:338:0","nodes":[{"id":11,"nodeType":"FunctionDefinition","src":"716:96:0","nodes":[],"body":{"id":10,"nodeType":"Block","src":"778:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":7,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"795:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"799:6:0","memberName":"sender","nodeType":"MemberAccess","src":"795:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6,"id":9,"nodeType":"Return","src":"788:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"725:10:0","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"735:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"769:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"768:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":20,"nodeType":"FunctionDefinition","src":"818:99:0","nodes":[],"body":{"id":19,"nodeType":"Block","src":"885:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":16,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"902:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"906:4:0","memberName":"data","nodeType":"MemberAccess","src":"902:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":15,"id":18,"nodeType":"Return","src":"895:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"827:8:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"835:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"869:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"868:16:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":28,"nodeType":"FunctionDefinition","src":"923:97:0","nodes":[],"body":{"id":27,"nodeType":"Block","src":"995:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24,"id":26,"nodeType":"Return","src":"1005:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"932:20:0","parameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"952:2:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"986:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"187:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[29],"name":"Context","nameLocation":"702:7:0","scope":224,"usedErrors":[],"usedEvents":[]},{"id":30,"nodeType":"PragmaDirective","src":"1148:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":174,"nodeType":"ContractDefinition","src":"1663:2438:0","nodes":[{"id":35,"nodeType":"VariableDeclaration","src":"1706:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1722:6:0","scope":174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":40,"nodeType":"ErrorDefinition","src":"1825:50:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1831:26:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"account","nameLocation":"1866:7:0","nodeType":"VariableDeclaration","scope":40,"src":"1858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1857:17:0"}},{"id":45,"nodeType":"ErrorDefinition","src":"1968:41:0","nodes":[],"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1974:19:0","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"owner","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":45,"src":"1994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1993:15:0"}},{"id":51,"nodeType":"EventDefinition","src":"2015:84:0","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"2021:20:0","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"2058:13:0","nodeType":"VariableDeclaration","scope":51,"src":"2042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"2089:8:0","nodeType":"VariableDeclaration","scope":51,"src":"2073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:57:0"}},{"id":77,"nodeType":"FunctionDefinition","src":"2225:187:0","nodes":[],"body":{"id":76,"nodeType":"Block","src":"2259:153:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":57,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{}}},"id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71,"nodeType":"IfStatement","src":"2269:95:0","trueBody":{"id":70,"nodeType":"Block","src":"2301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":66,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":65,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":63,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"2322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69,"nodeType":"RevertStatement","src":"2315:38:0"}]}},{"expression":{"arguments":[{"id":73,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":72,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"2373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"2373:32:0"}]},"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"2105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"initialOwner","nameLocation":"2245:12:0","nodeType":"VariableDeclaration","scope":77,"src":"2237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2236:22:0"},"returnParameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2259:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":85,"nodeType":"ModifierDefinition","src":"2500:62:0","nodes":[],"body":{"id":84,"nodeType":"Block","src":"2521:41:0","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"ExpressionStatement","src":"2531:13:0"},{"id":83,"nodeType":"PlaceholderStatement","src":"2554:1:0"}]},"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2418:77:0","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2509:9:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"2518:2:0"},"virtual":false,"visibility":"internal"},{"id":94,"nodeType":"FunctionDefinition","src":"2638:85:0","nodes":[],"body":{"id":93,"nodeType":"Block","src":"2693:30:0","nodes":[],"statements":[{"expression":{"id":91,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90,"id":92,"nodeType":"Return","src":"2703:13:0"}]},"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2647:5:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"2652:2:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"2684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2683:9:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":111,"nodeType":"FunctionDefinition","src":"2796:162:0","nodes":[],"body":{"id":110,"nodeType":"Block","src":"2841:117:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":100,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2851:101:0","trueBody":{"id":108,"nodeType":"Block","src":"2880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":103,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"RevertStatement","src":"2894:47:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"2729:62:0","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2805:11:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2816:2:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"2841:0:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":125,"nodeType":"FunctionDefinition","src":"3293:101:0","nodes":[],"body":{"id":124,"nodeType":"Block","src":"3347:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3376:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":117,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"ExpressionStatement","src":"3357:30:0"}]},"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"2964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":115,"kind":"modifierInvocation","modifierName":{"id":114,"name":"onlyOwner","nameLocations":["3337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3337:9:0"},"nodeType":"ModifierInvocation","src":"3337:9:0"}],"name":"renounceOwnership","nameLocation":"3302:17:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"3319:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"3347:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":153,"nodeType":"FunctionDefinition","src":"3543:215:0","nodes":[],"body":{"id":152,"nodeType":"Block","src":"3613:145:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"3623:91:0","trueBody":{"id":146,"nodeType":"Block","src":"3651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:0","typeDescriptions":{}}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"3672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"RevertStatement","src":"3665:38:0"}]}},{"expression":{"arguments":[{"id":149,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":148,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"3723:28:0"}]},"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"3400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":131,"kind":"modifierInvocation","modifierName":{"id":130,"name":"onlyOwner","nameLocations":["3603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3603:9:0"},"nodeType":"ModifierInvocation","src":"3603:9:0"}],"name":"transferOwnership","nameLocation":"3552:17:0","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"newOwner","nameLocation":"3578:8:0","nodeType":"VariableDeclaration","scope":153,"src":"3570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:18:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"3613:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":173,"nodeType":"FunctionDefinition","src":"3912:187:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"3975:124:0","nodes":[],"statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"oldOwner","nameLocation":"3993:8:0","nodeType":"VariableDeclaration","scope":172,"src":"3985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":162,"initialValue":{"id":161,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3985:25:0"},{"expression":{"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":163,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":164,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":166,"nodeType":"ExpressionStatement","src":"4020:17:0"},{"eventCall":{"arguments":[{"id":168,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":169,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":167,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"4052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":171,"nodeType":"EmitStatement","src":"4047:45:0"}]},"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"3764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3921:18:0","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"newOwner","nameLocation":"3948:8:0","nodeType":"VariableDeclaration","scope":173,"src":"3940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3939:18:0"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"3975:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":32,"name":"Context","nameLocations":["1692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":29,"src":"1692:7:0"},"id":33,"nodeType":"InheritanceSpecifier","src":"1692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[174,29],"name":"Ownable","nameLocation":"1681:7:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]},{"id":175,"nodeType":"PragmaDirective","src":"4129:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":223,"nodeType":"ContractDefinition","src":"4155:438:0","nodes":[{"id":180,"nodeType":"VariableDeclaration","src":"4192:55:0","nodes":[],"constant":true,"functionSelector":"84860633","mutability":"constant","name":"WITHDRAWAL_AMOUNT","nameLocation":"4216:17:0","scope":223,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4192:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:11:0","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":188,"nodeType":"FunctionDefinition","src":"4254:36:0","nodes":[],"body":{"id":187,"nodeType":"Block","src":"4288:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4276:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":185,"kind":"baseConstructorSpecifier","modifierName":{"id":182,"name":"Ownable","nameLocations":["4268:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4268:7:0"},"nodeType":"ModifierInvocation","src":"4268:19:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"4265:2:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"4288:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"4296:29:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"4323:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4303:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"4323:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":196,"nodeType":"FunctionDefinition","src":"4331:30:0","nodes":[],"body":{"id":195,"nodeType":"Block","src":"4359:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"4339:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"4359:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":210,"nodeType":"FunctionDefinition","src":"4367:113:0","nodes":[],"body":{"id":209,"nodeType":"Block","src":"4426:54:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"WITHDRAWAL_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4455:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":203,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4436:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4446:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"4436:18:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"4436:37:0"}]},"functionSelector":"1e83409a","implemented":true,"kind":"function","modifiers":[{"id":201,"kind":"modifierInvocation","modifierName":{"id":200,"name":"onlyOwner","nameLocations":["4416:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"4416:9:0"},"nodeType":"ModifierInvocation","src":"4416:9:0"}],"name":"claim","nameLocation":"4376:5:0","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"recipient","nameLocation":"4398:9:0","nodeType":"VariableDeclaration","scope":210,"src":"4382:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"4382:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"4381:27:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"4426:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":222,"nodeType":"FunctionDefinition","src":"4486:105:0","nodes":[],"body":{"id":221,"nodeType":"Block","src":"4546:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4571:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}],"id":216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"4563:7:0","typeDescriptions":{}}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4577:7:0","memberName":"balance","nodeType":"MemberAccess","src":"4563:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":214,"id":220,"nodeType":"Return","src":"4556:28:0"}]},"functionSelector":"6f9fb98a","implemented":true,"kind":"function","modifiers":[],"name":"getContractBalance","nameLocation":"4495:18:0","parameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"4513:2:0"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"4537:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4536:9:0"},"scope":223,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":176,"name":"Ownable","nameLocations":["4178:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4178:7:0"},"id":177,"nodeType":"InheritanceSpecifier","src":"4178:7:0"}],"canonicalName":"MotemaPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[223,174,29],"name":"MotemaPool","nameLocation":"4164:10:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]}],"license":"UNLICENSED"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json new file mode 100644 index 0000000..028cb38 --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"WITHDRAWAL_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getContractBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6102a0806100a56000396000f3fe6080604052600436106100565760003560e01c80631e83409a1461005f5780636f9fb98a1461007f578063715018a6146100a157806384860633146100b65780638da5cb5b146100d1578063f2fde38b146100f957005b3661005d57005b005b34801561006b57600080fd5b5061005d61007a366004610246565b610119565b34801561008b57600080fd5b50475b6040519081526020015b60405180910390f35b3480156100ad57600080fd5b5061005d61015d565b3480156100c257600080fd5b5061008e6611c37937e0800081565b3480156100dd57600080fd5b506000546040516001600160a01b039091168152602001610098565b34801561010557600080fd5b5061005d610114366004610246565b610171565b6101216101b4565b6040516001600160a01b038216906000906611c37937e080009082818181858883f19350505050158015610159573d6000803e3d6000fd5b5050565b6101656101b4565b61016f60006101e1565b565b6101796101b4565b6001600160a01b0381166101a857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101b1816101e1565b50565b6000546001600160a01b0316331461016f5760405163118cdaa760e01b815233600482015260240161019f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101b157600080fd5b60006020828403121561025857600080fd5b813561026381610231565b939250505056fea26469706673582212201958c09198ba31584011a811d739e33994c528777a1fbf62c7a7a0f79d6f3cbf64736f6c63430008180033","sourceMap":"4155:438:0:-:0;;;4254:36;;;;;;;;;-1:-1:-1;4276:10:0;;2269:95;;2322:31;;-1:-1:-1;;;2322:31:0;;2350:1;2322:31;;;160:51:1;133:18;;2322:31:0;;;;;;;2269:95;2373:32;2392:12;2373:18;:32::i;:::-;2225:187;4155:438;;3912:187;3985:16;4004:6;;-1:-1:-1;;;;;4020:17:0;;;-1:-1:-1;;;;;;4020:17:0;;;;;;4052:40;;4004:6;;;;;;;4052:40;;3985:16;4052:40;3975:124;3912:187;:::o;14:203:1:-;4155:438:0;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100565760003560e01c80631e83409a1461005f5780636f9fb98a1461007f578063715018a6146100a157806384860633146100b65780638da5cb5b146100d1578063f2fde38b146100f957005b3661005d57005b005b34801561006b57600080fd5b5061005d61007a366004610246565b610119565b34801561008b57600080fd5b50475b6040519081526020015b60405180910390f35b3480156100ad57600080fd5b5061005d61015d565b3480156100c257600080fd5b5061008e6611c37937e0800081565b3480156100dd57600080fd5b506000546040516001600160a01b039091168152602001610098565b34801561010557600080fd5b5061005d610114366004610246565b610171565b6101216101b4565b6040516001600160a01b038216906000906611c37937e080009082818181858883f19350505050158015610159573d6000803e3d6000fd5b5050565b6101656101b4565b61016f60006101e1565b565b6101796101b4565b6001600160a01b0381166101a857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101b1816101e1565b50565b6000546001600160a01b0316331461016f5760405163118cdaa760e01b815233600482015260240161019f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101b157600080fd5b60006020828403121561025857600080fd5b813561026381610231565b939250505056fea26469706673582212201958c09198ba31584011a811d739e33994c528777a1fbf62c7a7a0f79d6f3cbf64736f6c63430008180033","sourceMap":"4155:438:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4367:113;;;;;;;;;;-1:-1:-1;4367:113:0;;;;;:::i;:::-;;:::i;4486:105::-;;;;;;;;;;-1:-1:-1;4563:21:0;4486:105;;;572:25:1;;;560:2;545:18;4486:105:0;;;;;;;;3293:101;;;;;;;;;;;;;:::i;4192:55::-;;;;;;;;;;;;4236:11;4192:55;;2638:85;;;;;;;;;;-1:-1:-1;2684:7:0;2710:6;2638:85;;-1:-1:-1;;;;;2710:6:0;;;754:51:1;;742:2;727:18;2638:85:0;608:203:1;3543:215:0;;;;;;;;;;-1:-1:-1;3543:215:0;;;;;:::i;:::-;;:::i;4367:113::-;2531:13;:11;:13::i;:::-;4436:37:::1;::::0;-1:-1:-1;;;;;4436:18:0;::::1;::::0;:37;;4236:11:::1;::::0;4436:37;;;;4236:11;4436:18;:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;4367:113:::0;:::o;3293:101::-;2531:13;:11;:13::i;:::-;3357:30:::1;3384:1;3357:18;:30::i;:::-;3293:101::o:0;3543:215::-;2531:13;:11;:13::i;:::-;-1:-1:-1;;;;;3627:22:0;::::1;3623:91;;3672:31;::::0;-1:-1:-1;;;3672:31:0;;3700:1:::1;3672:31;::::0;::::1;754:51:1::0;727:18;;3672:31:0::1;;;;;;;;3623:91;3723:28;3742:8;3723:18;:28::i;:::-;3543:215:::0;:::o;2796:162::-;2684:7;2710:6;-1:-1:-1;;;;;2710:6:0;795:10;2855:23;2851:101;;2901:40;;-1:-1:-1;;;2901:40:0;;795:10;2901:40;;;754:51:1;727:18;;2901:40:0;608:203:1;3912:187:0;3985:16;4004:6;;-1:-1:-1;;;;;4020:17:0;;;-1:-1:-1;;;;;;4020:17:0;;;;;;4052:40;;4004:6;;;;;;;4052:40;;3985:16;4052:40;3975:124;3912:187;:::o;14:139:1:-;-1:-1:-1;;;;;97:31:1;;87:42;;77:70;;143:1;140;133:12;158:263;225:6;278:2;266:9;257:7;253:23;249:32;246:52;;;294:1;291;284:12;246:52;333:9;320:23;352:39;385:5;352:39;:::i;:::-;410:5;158:263;-1:-1:-1;;;158:263:1:o","linkReferences":{}},"methodIdentifiers":{"WITHDRAWAL_AMOUNT()":"84860633","claim(address)":"1e83409a","getContractBalance()":"6f9fb98a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"WITHDRAWAL_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getContractBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MotemaPool_flattened.sol\":\"MotemaPool\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MotemaPool_flattened.sol\":{\"keccak256\":\"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947\",\"dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"WITHDRAWAL_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claim"},{"inputs":[],"stateMutability":"view","type":"function","name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MotemaPool_flattened.sol":"MotemaPool"},"evmVersion":"paris","libraries":{}},"sources":{"src/MotemaPool_flattened.sol":{"keccak256":"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445","urls":["bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947","dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MotemaPool_flattened.sol","id":224,"exportedSymbols":{"Context":[29],"MotemaPool":[223],"Ownable":[174]},"nodeType":"SourceUnit","src":"161:4432:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"161:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":29,"nodeType":"ContractDefinition","src":"684:338:0","nodes":[{"id":11,"nodeType":"FunctionDefinition","src":"716:96:0","nodes":[],"body":{"id":10,"nodeType":"Block","src":"778:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":7,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"795:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"799:6:0","memberName":"sender","nodeType":"MemberAccess","src":"795:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6,"id":9,"nodeType":"Return","src":"788:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"725:10:0","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"735:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"769:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"768:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":20,"nodeType":"FunctionDefinition","src":"818:99:0","nodes":[],"body":{"id":19,"nodeType":"Block","src":"885:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":16,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"902:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"906:4:0","memberName":"data","nodeType":"MemberAccess","src":"902:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":15,"id":18,"nodeType":"Return","src":"895:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"827:8:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"835:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"869:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"868:16:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":28,"nodeType":"FunctionDefinition","src":"923:97:0","nodes":[],"body":{"id":27,"nodeType":"Block","src":"995:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24,"id":26,"nodeType":"Return","src":"1005:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"932:20:0","parameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"952:2:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"986:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"187:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[29],"name":"Context","nameLocation":"702:7:0","scope":224,"usedErrors":[],"usedEvents":[]},{"id":30,"nodeType":"PragmaDirective","src":"1148:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":174,"nodeType":"ContractDefinition","src":"1663:2438:0","nodes":[{"id":35,"nodeType":"VariableDeclaration","src":"1706:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1722:6:0","scope":174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":40,"nodeType":"ErrorDefinition","src":"1825:50:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1831:26:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"account","nameLocation":"1866:7:0","nodeType":"VariableDeclaration","scope":40,"src":"1858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1857:17:0"}},{"id":45,"nodeType":"ErrorDefinition","src":"1968:41:0","nodes":[],"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1974:19:0","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"owner","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":45,"src":"1994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1993:15:0"}},{"id":51,"nodeType":"EventDefinition","src":"2015:84:0","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"2021:20:0","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"2058:13:0","nodeType":"VariableDeclaration","scope":51,"src":"2042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"2089:8:0","nodeType":"VariableDeclaration","scope":51,"src":"2073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:57:0"}},{"id":77,"nodeType":"FunctionDefinition","src":"2225:187:0","nodes":[],"body":{"id":76,"nodeType":"Block","src":"2259:153:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":57,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{}}},"id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71,"nodeType":"IfStatement","src":"2269:95:0","trueBody":{"id":70,"nodeType":"Block","src":"2301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":66,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":65,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":63,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"2322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69,"nodeType":"RevertStatement","src":"2315:38:0"}]}},{"expression":{"arguments":[{"id":73,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":72,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"2373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"2373:32:0"}]},"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"2105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"initialOwner","nameLocation":"2245:12:0","nodeType":"VariableDeclaration","scope":77,"src":"2237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2236:22:0"},"returnParameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2259:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":85,"nodeType":"ModifierDefinition","src":"2500:62:0","nodes":[],"body":{"id":84,"nodeType":"Block","src":"2521:41:0","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"ExpressionStatement","src":"2531:13:0"},{"id":83,"nodeType":"PlaceholderStatement","src":"2554:1:0"}]},"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2418:77:0","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2509:9:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"2518:2:0"},"virtual":false,"visibility":"internal"},{"id":94,"nodeType":"FunctionDefinition","src":"2638:85:0","nodes":[],"body":{"id":93,"nodeType":"Block","src":"2693:30:0","nodes":[],"statements":[{"expression":{"id":91,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90,"id":92,"nodeType":"Return","src":"2703:13:0"}]},"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2647:5:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"2652:2:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"2684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2683:9:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":111,"nodeType":"FunctionDefinition","src":"2796:162:0","nodes":[],"body":{"id":110,"nodeType":"Block","src":"2841:117:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":100,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2851:101:0","trueBody":{"id":108,"nodeType":"Block","src":"2880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":103,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"RevertStatement","src":"2894:47:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"2729:62:0","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2805:11:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2816:2:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"2841:0:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":125,"nodeType":"FunctionDefinition","src":"3293:101:0","nodes":[],"body":{"id":124,"nodeType":"Block","src":"3347:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3376:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":117,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"ExpressionStatement","src":"3357:30:0"}]},"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"2964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":115,"kind":"modifierInvocation","modifierName":{"id":114,"name":"onlyOwner","nameLocations":["3337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3337:9:0"},"nodeType":"ModifierInvocation","src":"3337:9:0"}],"name":"renounceOwnership","nameLocation":"3302:17:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"3319:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"3347:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":153,"nodeType":"FunctionDefinition","src":"3543:215:0","nodes":[],"body":{"id":152,"nodeType":"Block","src":"3613:145:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"3623:91:0","trueBody":{"id":146,"nodeType":"Block","src":"3651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:0","typeDescriptions":{}}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"3672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"RevertStatement","src":"3665:38:0"}]}},{"expression":{"arguments":[{"id":149,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":148,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"3723:28:0"}]},"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"3400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":131,"kind":"modifierInvocation","modifierName":{"id":130,"name":"onlyOwner","nameLocations":["3603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3603:9:0"},"nodeType":"ModifierInvocation","src":"3603:9:0"}],"name":"transferOwnership","nameLocation":"3552:17:0","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"newOwner","nameLocation":"3578:8:0","nodeType":"VariableDeclaration","scope":153,"src":"3570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:18:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"3613:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":173,"nodeType":"FunctionDefinition","src":"3912:187:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"3975:124:0","nodes":[],"statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"oldOwner","nameLocation":"3993:8:0","nodeType":"VariableDeclaration","scope":172,"src":"3985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":162,"initialValue":{"id":161,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3985:25:0"},{"expression":{"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":163,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":164,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":166,"nodeType":"ExpressionStatement","src":"4020:17:0"},{"eventCall":{"arguments":[{"id":168,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":169,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":167,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"4052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":171,"nodeType":"EmitStatement","src":"4047:45:0"}]},"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"3764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3921:18:0","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"newOwner","nameLocation":"3948:8:0","nodeType":"VariableDeclaration","scope":173,"src":"3940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3939:18:0"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"3975:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":32,"name":"Context","nameLocations":["1692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":29,"src":"1692:7:0"},"id":33,"nodeType":"InheritanceSpecifier","src":"1692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[174,29],"name":"Ownable","nameLocation":"1681:7:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]},{"id":175,"nodeType":"PragmaDirective","src":"4129:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":223,"nodeType":"ContractDefinition","src":"4155:438:0","nodes":[{"id":180,"nodeType":"VariableDeclaration","src":"4192:55:0","nodes":[],"constant":true,"functionSelector":"84860633","mutability":"constant","name":"WITHDRAWAL_AMOUNT","nameLocation":"4216:17:0","scope":223,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4192:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:11:0","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":188,"nodeType":"FunctionDefinition","src":"4254:36:0","nodes":[],"body":{"id":187,"nodeType":"Block","src":"4288:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4276:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":185,"kind":"baseConstructorSpecifier","modifierName":{"id":182,"name":"Ownable","nameLocations":["4268:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4268:7:0"},"nodeType":"ModifierInvocation","src":"4268:19:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"4265:2:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"4288:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"4296:29:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"4323:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4303:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"4323:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":196,"nodeType":"FunctionDefinition","src":"4331:30:0","nodes":[],"body":{"id":195,"nodeType":"Block","src":"4359:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"4339:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"4359:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":210,"nodeType":"FunctionDefinition","src":"4367:113:0","nodes":[],"body":{"id":209,"nodeType":"Block","src":"4426:54:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"WITHDRAWAL_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4455:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":203,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4436:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4446:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"4436:18:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"4436:37:0"}]},"functionSelector":"1e83409a","implemented":true,"kind":"function","modifiers":[{"id":201,"kind":"modifierInvocation","modifierName":{"id":200,"name":"onlyOwner","nameLocations":["4416:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"4416:9:0"},"nodeType":"ModifierInvocation","src":"4416:9:0"}],"name":"claim","nameLocation":"4376:5:0","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"recipient","nameLocation":"4398:9:0","nodeType":"VariableDeclaration","scope":210,"src":"4382:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"4382:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"4381:27:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"4426:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":222,"nodeType":"FunctionDefinition","src":"4486:105:0","nodes":[],"body":{"id":221,"nodeType":"Block","src":"4546:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4571:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}],"id":216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"4563:7:0","typeDescriptions":{}}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4577:7:0","memberName":"balance","nodeType":"MemberAccess","src":"4563:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":214,"id":220,"nodeType":"Return","src":"4556:28:0"}]},"functionSelector":"6f9fb98a","implemented":true,"kind":"function","modifiers":[],"name":"getContractBalance","nameLocation":"4495:18:0","parameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"4513:2:0"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"4537:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4536:9:0"},"scope":223,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":176,"name":"Ownable","nameLocations":["4178:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4178:7:0"},"id":177,"nodeType":"InheritanceSpecifier","src":"4178:7:0"}],"canonicalName":"MotemaPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[223,174,29],"name":"MotemaPool","nameLocation":"4164:10:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]}],"license":"UNLICENSED"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json new file mode 100644 index 0000000..772426e --- /dev/null +++ b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MotemaPool_flattened.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MotemaPool_flattened.sol\":{\"keccak256\":\"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947\",\"dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MotemaPool_flattened.sol":"Ownable"},"evmVersion":"paris","libraries":{}},"sources":{"src/MotemaPool_flattened.sol":{"keccak256":"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445","urls":["bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947","dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MotemaPool_flattened.sol","id":224,"exportedSymbols":{"Context":[29],"MotemaPool":[223],"Ownable":[174]},"nodeType":"SourceUnit","src":"161:4432:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"161:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":29,"nodeType":"ContractDefinition","src":"684:338:0","nodes":[{"id":11,"nodeType":"FunctionDefinition","src":"716:96:0","nodes":[],"body":{"id":10,"nodeType":"Block","src":"778:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":7,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"795:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"799:6:0","memberName":"sender","nodeType":"MemberAccess","src":"795:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6,"id":9,"nodeType":"Return","src":"788:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"725:10:0","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"735:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"769:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"768:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":20,"nodeType":"FunctionDefinition","src":"818:99:0","nodes":[],"body":{"id":19,"nodeType":"Block","src":"885:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":16,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"902:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"906:4:0","memberName":"data","nodeType":"MemberAccess","src":"902:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":15,"id":18,"nodeType":"Return","src":"895:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"827:8:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"835:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"869:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"868:16:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":28,"nodeType":"FunctionDefinition","src":"923:97:0","nodes":[],"body":{"id":27,"nodeType":"Block","src":"995:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24,"id":26,"nodeType":"Return","src":"1005:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"932:20:0","parameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"952:2:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"986:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"187:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[29],"name":"Context","nameLocation":"702:7:0","scope":224,"usedErrors":[],"usedEvents":[]},{"id":30,"nodeType":"PragmaDirective","src":"1148:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":174,"nodeType":"ContractDefinition","src":"1663:2438:0","nodes":[{"id":35,"nodeType":"VariableDeclaration","src":"1706:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1722:6:0","scope":174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":40,"nodeType":"ErrorDefinition","src":"1825:50:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1831:26:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"account","nameLocation":"1866:7:0","nodeType":"VariableDeclaration","scope":40,"src":"1858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1857:17:0"}},{"id":45,"nodeType":"ErrorDefinition","src":"1968:41:0","nodes":[],"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1974:19:0","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"owner","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":45,"src":"1994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1993:15:0"}},{"id":51,"nodeType":"EventDefinition","src":"2015:84:0","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"2021:20:0","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"2058:13:0","nodeType":"VariableDeclaration","scope":51,"src":"2042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"2089:8:0","nodeType":"VariableDeclaration","scope":51,"src":"2073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:57:0"}},{"id":77,"nodeType":"FunctionDefinition","src":"2225:187:0","nodes":[],"body":{"id":76,"nodeType":"Block","src":"2259:153:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":57,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{}}},"id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71,"nodeType":"IfStatement","src":"2269:95:0","trueBody":{"id":70,"nodeType":"Block","src":"2301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":66,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":65,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":63,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"2322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69,"nodeType":"RevertStatement","src":"2315:38:0"}]}},{"expression":{"arguments":[{"id":73,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":72,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"2373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"2373:32:0"}]},"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"2105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"initialOwner","nameLocation":"2245:12:0","nodeType":"VariableDeclaration","scope":77,"src":"2237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2236:22:0"},"returnParameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2259:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":85,"nodeType":"ModifierDefinition","src":"2500:62:0","nodes":[],"body":{"id":84,"nodeType":"Block","src":"2521:41:0","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"ExpressionStatement","src":"2531:13:0"},{"id":83,"nodeType":"PlaceholderStatement","src":"2554:1:0"}]},"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2418:77:0","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2509:9:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"2518:2:0"},"virtual":false,"visibility":"internal"},{"id":94,"nodeType":"FunctionDefinition","src":"2638:85:0","nodes":[],"body":{"id":93,"nodeType":"Block","src":"2693:30:0","nodes":[],"statements":[{"expression":{"id":91,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90,"id":92,"nodeType":"Return","src":"2703:13:0"}]},"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2647:5:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"2652:2:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"2684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2683:9:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":111,"nodeType":"FunctionDefinition","src":"2796:162:0","nodes":[],"body":{"id":110,"nodeType":"Block","src":"2841:117:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":100,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2851:101:0","trueBody":{"id":108,"nodeType":"Block","src":"2880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":103,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"RevertStatement","src":"2894:47:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"2729:62:0","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2805:11:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2816:2:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"2841:0:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":125,"nodeType":"FunctionDefinition","src":"3293:101:0","nodes":[],"body":{"id":124,"nodeType":"Block","src":"3347:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3376:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":117,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"ExpressionStatement","src":"3357:30:0"}]},"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"2964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":115,"kind":"modifierInvocation","modifierName":{"id":114,"name":"onlyOwner","nameLocations":["3337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3337:9:0"},"nodeType":"ModifierInvocation","src":"3337:9:0"}],"name":"renounceOwnership","nameLocation":"3302:17:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"3319:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"3347:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":153,"nodeType":"FunctionDefinition","src":"3543:215:0","nodes":[],"body":{"id":152,"nodeType":"Block","src":"3613:145:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"3623:91:0","trueBody":{"id":146,"nodeType":"Block","src":"3651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:0","typeDescriptions":{}}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"3672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"RevertStatement","src":"3665:38:0"}]}},{"expression":{"arguments":[{"id":149,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":148,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"3723:28:0"}]},"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"3400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":131,"kind":"modifierInvocation","modifierName":{"id":130,"name":"onlyOwner","nameLocations":["3603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3603:9:0"},"nodeType":"ModifierInvocation","src":"3603:9:0"}],"name":"transferOwnership","nameLocation":"3552:17:0","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"newOwner","nameLocation":"3578:8:0","nodeType":"VariableDeclaration","scope":153,"src":"3570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:18:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"3613:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":173,"nodeType":"FunctionDefinition","src":"3912:187:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"3975:124:0","nodes":[],"statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"oldOwner","nameLocation":"3993:8:0","nodeType":"VariableDeclaration","scope":172,"src":"3985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":162,"initialValue":{"id":161,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3985:25:0"},{"expression":{"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":163,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":164,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":166,"nodeType":"ExpressionStatement","src":"4020:17:0"},{"eventCall":{"arguments":[{"id":168,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":169,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":167,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"4052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":171,"nodeType":"EmitStatement","src":"4047:45:0"}]},"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"3764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3921:18:0","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"newOwner","nameLocation":"3948:8:0","nodeType":"VariableDeclaration","scope":173,"src":"3940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3939:18:0"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"3975:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":32,"name":"Context","nameLocations":["1692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":29,"src":"1692:7:0"},"id":33,"nodeType":"InheritanceSpecifier","src":"1692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[174,29],"name":"Ownable","nameLocation":"1681:7:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]},{"id":175,"nodeType":"PragmaDirective","src":"4129:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":223,"nodeType":"ContractDefinition","src":"4155:438:0","nodes":[{"id":180,"nodeType":"VariableDeclaration","src":"4192:55:0","nodes":[],"constant":true,"functionSelector":"84860633","mutability":"constant","name":"WITHDRAWAL_AMOUNT","nameLocation":"4216:17:0","scope":223,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4192:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:11:0","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":188,"nodeType":"FunctionDefinition","src":"4254:36:0","nodes":[],"body":{"id":187,"nodeType":"Block","src":"4288:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4276:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":185,"kind":"baseConstructorSpecifier","modifierName":{"id":182,"name":"Ownable","nameLocations":["4268:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4268:7:0"},"nodeType":"ModifierInvocation","src":"4268:19:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"4265:2:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"4288:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"4296:29:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"4323:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4303:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"4323:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":196,"nodeType":"FunctionDefinition","src":"4331:30:0","nodes":[],"body":{"id":195,"nodeType":"Block","src":"4359:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"4339:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"4359:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":210,"nodeType":"FunctionDefinition","src":"4367:113:0","nodes":[],"body":{"id":209,"nodeType":"Block","src":"4426:54:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"WITHDRAWAL_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4455:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":203,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4436:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4446:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"4436:18:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"4436:37:0"}]},"functionSelector":"1e83409a","implemented":true,"kind":"function","modifiers":[{"id":201,"kind":"modifierInvocation","modifierName":{"id":200,"name":"onlyOwner","nameLocations":["4416:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"4416:9:0"},"nodeType":"ModifierInvocation","src":"4416:9:0"}],"name":"claim","nameLocation":"4376:5:0","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"recipient","nameLocation":"4398:9:0","nodeType":"VariableDeclaration","scope":210,"src":"4382:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"4382:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"4381:27:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"4426:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":222,"nodeType":"FunctionDefinition","src":"4486:105:0","nodes":[],"body":{"id":221,"nodeType":"Block","src":"4546:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4571:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}],"id":216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"4563:7:0","typeDescriptions":{}}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4577:7:0","memberName":"balance","nodeType":"MemberAccess","src":"4563:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":214,"id":220,"nodeType":"Return","src":"4556:28:0"}]},"functionSelector":"6f9fb98a","implemented":true,"kind":"function","modifiers":[],"name":"getContractBalance","nameLocation":"4495:18:0","parameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"4513:2:0"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"4537:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4536:9:0"},"scope":223,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":176,"name":"Ownable","nameLocations":["4178:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4178:7:0"},"id":177,"nodeType":"InheritanceSpecifier","src":"4178:7:0"}],"canonicalName":"MotemaPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[223,174,29],"name":"MotemaPool","nameLocation":"4164:10:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]}],"license":"UNLICENSED"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/src/MotemaPool_flattened.sol b/examples/on-chain_mnist/contracts/src/MotemaPool_flattened.sol new file mode 100644 index 0000000..47ec220 --- /dev/null +++ b/examples/on-chain_mnist/contracts/src/MotemaPool_flattened.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: UNLICENSED +// File: @openzeppelin/contracts/utils/Context.sol + + +// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) + +pragma solidity ^0.8.20; + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } + + function _contextSuffixLength() internal view virtual returns (uint256) { + return 0; + } +} + +// File: @openzeppelin/contracts/access/Ownable.sol + + +// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) + +pragma solidity ^0.8.20; + + +/** + * @dev Contract module which provides a basic access control mechanism, where + * there is an account (an owner) that can be granted exclusive access to + * specific functions. + * + * The initial owner is set to the address provided by the deployer. This can + * later be changed with {transferOwnership}. + * + * This module is used through inheritance. It will make available the modifier + * `onlyOwner`, which can be applied to your functions to restrict their use to + * the owner. + */ +abstract contract Ownable is Context { + address private _owner; + + /** + * @dev The caller account is not authorized to perform an operation. + */ + error OwnableUnauthorizedAccount(address account); + + /** + * @dev The owner is not a valid owner account. (eg. `address(0)`) + */ + error OwnableInvalidOwner(address owner); + + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + /** + * @dev Initializes the contract setting the address provided by the deployer as the initial owner. + */ + constructor(address initialOwner) { + if (initialOwner == address(0)) { + revert OwnableInvalidOwner(address(0)); + } + _transferOwnership(initialOwner); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + if (owner() != _msgSender()) { + revert OwnableUnauthorizedAccount(_msgSender()); + } + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * `onlyOwner` functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + if (newOwner == address(0)) { + revert OwnableInvalidOwner(address(0)); + } + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + +// File: MotemaPool.sol + + +pragma solidity ^0.8.0; + + +contract MotemaPool is Ownable { + uint256 public constant WITHDRAWAL_AMOUNT = 0.005 ether; + + constructor() Ownable(msg.sender) {} + + receive() external payable {} + + fallback() external payable {} + + function claim(address payable recipient) public onlyOwner { + recipient.transfer(WITHDRAWAL_AMOUNT); + } + + function getContractBalance() public view returns (uint256) { + return address(this).balance; + } +} \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index d9e492b..44b35dc 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -184,7 +184,6 @@ async def verify(self, proof_path): version_id = self.version_id try: result = verify(None, proof=proof_path, model_id=model_id, version_id=version_id) - print(f"Proof verified -> {result}") if result is None: return True else: @@ -235,8 +234,6 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: else: alchemy_url = "https://eth-sepolia.g.alchemy.com/v2/aGP6ImVTfOlef4kzUxw0-31sabFgyTCT" web3 = Web3(Web3.HTTPProvider(alchemy_url)) - # contract = web3.eth.contract(address=contract_address, abi=contract_abi) - print("test") nonce = web3.eth.get_transaction_count(account.address) try: # Make this await again when we use etherscan to fetch ABIs @@ -244,7 +241,7 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: except KeyError as e: print(f"Error generating calldata: {str(e)}") raise - #TODO: Figure out how to estimate gas + #TODO: Figure out how to get gasPrice try: transaction = { "to": contract_address, @@ -252,6 +249,7 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: "nonce": nonce, "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), "gasPrice": 40000000000, + "value": value } except KeyError as e: print(f"Error creating transaction dictionary: {str(e)}") @@ -273,7 +271,7 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: return None try: receipt = web3.eth.wait_for_transaction_receipt(tx_hash, timeout=300) - print("made it.") + print("Transaction Completed.") return receipt except TimeExhausted: print("Transaction receipt retrieval timed out.") diff --git a/pyproject.toml b/pyproject.toml index 3b37cec..337c70d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,8 @@ description = "A Python SDK for Giza platform" authors = [ "Francisco Algaba ", "Raphael Doukhan ", - "Gonzalo Mellizo-Soto "] + "Gonzalo Mellizo-Soto ", + "Lance Davis "] readme = "README.md" license = "MIT" From 924d41d7515d119848336fdfcc0206f4780f63be Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 9 Mar 2024 18:15:11 +0000 Subject: [PATCH 13/27] adding to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1a62192..cc6469f 100644 --- a/.gitignore +++ b/.gitignore @@ -162,4 +162,5 @@ examples/on-chain_mnist/cairo/lofi_mnst/initializers examples/on-chain_mnist/cairo/lofi_mnst_2 examples/on-chain_mnist/cairo/soft -examples/on-chain_mnist/cairo/mnist_sierra \ No newline at end of file +examples/on-chain_mnist/cairo/mnist_sierra +examples/on-chain_mnist/contracts/out \ No newline at end of file From cd8537f1370675a77ee616c236d9fcf4c7928a84 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 9 Mar 2024 18:41:29 +0000 Subject: [PATCH 14/27] fix: abi path --- examples/on-chain_mnist/action_agent.py | 4 +++- .../contracts/out/Context.sol/Context.json | 1 - .../on-chain_mnist/contracts/out/ERC165.sol/ERC165.json | 1 - .../on-chain_mnist/contracts/out/ERC721.sol/ERC721.json | 1 - .../contracts/out/IERC165.sol/IERC165.json | 1 - .../contracts/out/IERC721.sol/IERC721.json | 1 - .../out/IERC721Metadata.sol/IERC721Metadata.json | 1 - .../out/IERC721Receiver.sol/IERC721Receiver.json | 1 - .../contracts/out/MNISTNFT.sol/MNISTNFT.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/Context.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/ERC165.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/ERC721.json | 1 - .../out/MNISTNFT_Flattened.sol/IERC1155Errors.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/IERC165.json | 1 - .../out/MNISTNFT_Flattened.sol/IERC20Errors.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/IERC721.json | 1 - .../out/MNISTNFT_Flattened.sol/IERC721Errors.json | 1 - .../out/MNISTNFT_Flattened.sol/IERC721Metadata.json | 1 - .../out/MNISTNFT_Flattened.sol/IERC721Receiver.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/Math.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/SignedMath.json | 1 - .../contracts/out/MNISTNFT_Flattened.sol/Strings.json | 1 - examples/on-chain_mnist/contracts/out/Math.sol/Math.json | 1 - .../contracts/out/MotemaPool_flattened.sol/Context.json | 1 - .../out/MotemaPool_flattened.sol/MotemaPool.json | 1 - .../contracts/out/MotemaPool_flattened.sol/Ownable.json | 1 - .../contracts/out/SignedMath.sol/SignedMath.json | 1 - .../contracts/out/Strings.sol/Strings.json | 1 - .../contracts/out/draft-IERC6093.sol/IERC1155Errors.json | 1 - .../contracts/out/draft-IERC6093.sol/IERC20Errors.json | 1 - .../contracts/out/draft-IERC6093.sol/IERC721Errors.json | 1 - giza_actions/agent.py | 9 ++++----- 33 files changed, 7 insertions(+), 37 deletions(-) delete mode 100644 examples/on-chain_mnist/contracts/out/Context.sol/Context.json delete mode 100644 examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json delete mode 100644 examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json delete mode 100644 examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json delete mode 100644 examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json delete mode 100644 examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json delete mode 100644 examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json delete mode 100644 examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json delete mode 100644 examples/on-chain_mnist/contracts/out/Math.sol/Math.json delete mode 100644 examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json delete mode 100644 examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json delete mode 100644 examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json delete mode 100644 examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json delete mode 100644 examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json delete mode 100644 examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json delete mode 100644 examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json delete mode 100644 examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index e266999..a6af425 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -79,6 +79,8 @@ async def transmission(): inference_result = int(agent.inference[0][0] * 10) # Pass the inference result and the sender address inference_result_arr = [inference_result, Address("0xEbeD10f21F32E7F327F8B923257c1b6EceD857b7")] + abi_path = "examples/on-chain_mnist/abi/MNISTNFT_abi.json" + print("inference result: ", inference_result_arr) value = 0 # Get the proof @@ -90,7 +92,7 @@ async def transmission(): print("Proof verified. 🚀") (signed_proof, is_none, proofMessage, signable_proof_message) = agent.sign_proof(account, proof, proof_path) try: - receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, function_name="mint", params=inference_result_arr, value=value, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) + receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, abi_path=abi_path, function_name="mint", params=inference_result_arr, value=value, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) print("Receipt: ", receipt) return receipt except Exception as e: diff --git a/examples/on-chain_mnist/contracts/out/Context.sol/Context.json b/examples/on-chain_mnist/contracts/out/Context.sol/Context.json deleted file mode 100644 index e9a6c07..0000000 --- a/examples/on-chain_mnist/contracts/out/Context.sol/Context.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","id":1339,"exportedSymbols":{"Context":[1338]},"nodeType":"SourceUnit","src":"101:862:5","nodes":[{"id":1310,"nodeType":"PragmaDirective","src":"101:24:5","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1338,"nodeType":"ContractDefinition","src":"624:338:5","nodes":[{"id":1320,"nodeType":"FunctionDefinition","src":"656:96:5","nodes":[],"body":{"id":1319,"nodeType":"Block","src":"718:34:5","nodes":[],"statements":[{"expression":{"expression":{"id":1316,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:5","memberName":"sender","nodeType":"MemberAccess","src":"735:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1315,"id":1318,"nodeType":"Return","src":"728:17:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:5","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[],"src":"675:2:5"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1320,"src":"709:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1313,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1329,"nodeType":"FunctionDefinition","src":"758:99:5","nodes":[],"body":{"id":1328,"nodeType":"Block","src":"825:32:5","nodes":[],"statements":[{"expression":{"expression":{"id":1325,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:5","memberName":"data","nodeType":"MemberAccess","src":"842:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1324,"id":1327,"nodeType":"Return","src":"835:15:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:5","parameters":{"id":1321,"nodeType":"ParameterList","parameters":[],"src":"775:2:5"},"returnParameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1329,"src":"809:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1322,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1337,"nodeType":"FunctionDefinition","src":"863:97:5","nodes":[],"body":{"id":1336,"nodeType":"Block","src":"935:25:5","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1333,"id":1335,"nodeType":"Return","src":"945:8:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:5","parameters":{"id":1330,"nodeType":"ParameterList","parameters":[],"src":"892:2:5"},"returnParameters":{"id":1333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1337,"src":"926:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:5"},"scope":1338,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1311,"nodeType":"StructuredDocumentation","src":"127:496:5","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1338],"name":"Context","nameLocation":"642:7:5","scope":1339,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":5} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json b/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json deleted file mode 100644 index 7532938..0000000 --- a/examples/on-chain_mnist/contracts/out/ERC165.sol/ERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","id":1618,"exportedSymbols":{"ERC165":[1617],"IERC165":[1629]},"nodeType":"SourceUnit","src":"114:797:7","nodes":[{"id":1595,"nodeType":"PragmaDirective","src":"114:24:7","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1597,"nodeType":"ImportDirective","src":"140:38:7","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":1618,"sourceUnit":1630,"symbolAliases":[{"foreign":{"id":1596,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"148:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1617,"nodeType":"ContractDefinition","src":"659:251:7","nodes":[{"id":1616,"nodeType":"FunctionDefinition","src":"762:146:7","nodes":[],"body":{"id":1615,"nodeType":"Block","src":"844:64:7","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1608,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"861:11:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1610,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"881:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1629_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1629_$","typeString":"type(contract IERC165)"}],"id":1609,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"876:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"876:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1629","typeString":"type(contract IERC165)"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"890:11:7","memberName":"interfaceId","nodeType":"MemberAccess","src":"876:25:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"861:40:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1607,"id":1614,"nodeType":"Return","src":"854:47:7"}]},"baseFunctions":[1628],"documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"701:56:7","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"771:17:7","parameters":{"id":1604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1603,"mutability":"mutable","name":"interfaceId","nameLocation":"796:11:7","nodeType":"VariableDeclaration","scope":1616,"src":"789:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1602,"name":"bytes4","nodeType":"ElementaryTypeName","src":"789:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"788:20:7"},"returnParameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1616,"src":"838:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1605,"name":"bool","nodeType":"ElementaryTypeName","src":"838:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"837:6:7"},"scope":1617,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1599,"name":"IERC165","nameLocations":["687:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"687:7:7"},"id":1600,"nodeType":"InheritanceSpecifier","src":"687:7:7"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"180:478:7","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1617,1629],"name":"ERC165","nameLocation":"677:6:7","scope":1618,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":7} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json b/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json deleted file mode 100644 index 41ee3e4..0000000 --- a/examples/on-chain_mnist/contracts/out/ERC721.sol/ERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":"ERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","id":1146,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"Strings":[1593]},"nodeType":"SourceUnit","src":"107:17596:1","nodes":[{"id":138,"nodeType":"PragmaDirective","src":"107:24:1","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":140,"nodeType":"ImportDirective","src":"133:38:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1263,"symbolAliases":[{"foreign":{"id":139,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"141:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":142,"nodeType":"ImportDirective","src":"172:54:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1281,"symbolAliases":[{"foreign":{"id":141,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"180:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":144,"nodeType":"ImportDirective","src":"227:65:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1309,"symbolAliases":[{"foreign":{"id":143,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"235:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":146,"nodeType":"ImportDirective","src":"293:48:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","file":"../../utils/Context.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1339,"symbolAliases":[{"foreign":{"id":145,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"301:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":148,"nodeType":"ImportDirective","src":"342:48:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1594,"symbolAliases":[{"foreign":{"id":147,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1593,"src":"350:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":151,"nodeType":"ImportDirective","src":"391:69:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":1618,"symbolAliases":[{"foreign":{"id":149,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"399:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":150,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"408:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":153,"nodeType":"ImportDirective","src":"461:66:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","nameLocation":"-1:-1:-1","scope":1146,"sourceUnit":137,"symbolAliases":[{"foreign":{"id":152,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"469:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1145,"nodeType":"ContractDefinition","src":"776:16926:1","nodes":[{"id":167,"nodeType":"UsingForDirective","src":"867:26:1","nodes":[],"global":false,"libraryName":{"id":165,"name":"Strings","nameLocations":["873:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1593,"src":"873:7:1"},"typeName":{"id":166,"name":"uint256","nodeType":"ElementaryTypeName","src":"885:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":169,"nodeType":"VariableDeclaration","src":"917:20:1","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"932:5:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":168,"name":"string","nodeType":"ElementaryTypeName","src":"917:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":171,"nodeType":"VariableDeclaration","src":"964:22:1","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"979:7:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":170,"name":"string","nodeType":"ElementaryTypeName","src":"964:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":175,"nodeType":"VariableDeclaration","src":"993:51:1","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"1037:7:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":174,"keyName":"tokenId","keyNameLocation":"1009:7:1","keyType":{"id":172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"993:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":179,"nodeType":"VariableDeclaration","src":"1051:51:1","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1093:9:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":178,"keyName":"owner","keyNameLocation":"1067:5:1","keyType":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"1059:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1051:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1076:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":183,"nodeType":"VariableDeclaration","src":"1109:59:1","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1153:15:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":182,"keyName":"tokenId","keyNameLocation":"1125:7:1","keyType":{"id":180,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1109:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":189,"nodeType":"VariableDeclaration","src":"1175:86:1","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1243:18:1","scope":1145,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":188,"keyName":"owner","keyNameLocation":"1191:5:1","keyType":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1175:59:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":187,"keyName":"operator","keyNameLocation":"1216:8:1","keyType":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1208:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1200:33:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":186,"name":"bool","nodeType":"ElementaryTypeName","src":"1228:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":206,"nodeType":"FunctionDefinition","src":"1381:113:1","nodes":[],"body":{"id":205,"nodeType":"Block","src":"1437:57:1","nodes":[],"statements":[{"expression":{"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":197,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1447:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":198,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"1455:5:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1447:13:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":200,"nodeType":"ExpressionStatement","src":"1447:13:1"},{"expression":{"id":203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":201,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1470:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":202,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"1480:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1470:17:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":204,"nodeType":"ExpressionStatement","src":"1470:17:1"}]},"documentation":{"id":190,"nodeType":"StructuredDocumentation","src":"1268:108:1","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"name_","nameLocation":"1407:5:1","nodeType":"VariableDeclaration","scope":206,"src":"1393:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":191,"name":"string","nodeType":"ElementaryTypeName","src":"1393:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"symbol_","nameLocation":"1428:7:1","nodeType":"VariableDeclaration","scope":206,"src":"1414:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":193,"name":"string","nodeType":"ElementaryTypeName","src":"1414:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1392:44:1"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[],"src":"1437:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":237,"nodeType":"FunctionDefinition","src":"1561:300:1","nodes":[],"body":{"id":236,"nodeType":"Block","src":"1669:192:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1698:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":219,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"1718:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1262_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1262_$","typeString":"type(contract IERC721)"}],"id":218,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1713:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1713:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1262","typeString":"type(contract IERC721)"}},"id":221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1727:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"1713:25:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1698:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":223,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1754:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":225,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"1774:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1308_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1308_$","typeString":"type(contract IERC721Metadata)"}],"id":224,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1769:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1769:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1308","typeString":"type(contract IERC721Metadata)"}},"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1791:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"1769:33:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1754:48:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1698:104:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":232,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"1842:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":230,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1818:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$1145_$","typeString":"type(contract super ERC721)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1824:17:1","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1616,"src":"1818:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1818:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1698:156:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":216,"id":235,"nodeType":"Return","src":"1679:175:1"}]},"baseFunctions":[1616,1628],"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"1500:56:1","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1570:17:1","overrides":{"id":213,"nodeType":"OverrideSpecifier","overrides":[{"id":211,"name":"ERC165","nameLocations":["1637:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1617,"src":"1637:6:1"},{"id":212,"name":"IERC165","nameLocations":["1645:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"1645:7:1"}],"src":"1628:25:1"},"parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"interfaceId","nameLocation":"1595:11:1","nodeType":"VariableDeclaration","scope":237,"src":"1588:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":208,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1588:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1587:20:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":237,"src":"1663:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":214,"name":"bool","nodeType":"ElementaryTypeName","src":"1663:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1662:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":265,"nodeType":"FunctionDefinition","src":"1920:208:1","nodes":[],"body":{"id":264,"nodeType":"Block","src":"1992:136:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":245,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2006:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2023:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2015:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":246,"name":"address","nodeType":"ElementaryTypeName","src":"2015:7:1","typeDescriptions":{}}},"id":249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2015:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2006:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":259,"nodeType":"IfStatement","src":"2002:87:1","trueBody":{"id":258,"nodeType":"Block","src":"2027:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2075:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2067:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":252,"name":"address","nodeType":"ElementaryTypeName","src":"2067:7:1","typeDescriptions":{}}},"id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2067:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":251,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2048:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2048:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"RevertStatement","src":"2041:37:1"}]}},{"expression":{"baseExpression":{"id":260,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"2105:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":262,"indexExpression":{"id":261,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"2115:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2105:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":244,"id":263,"nodeType":"Return","src":"2098:23:1"}]},"baseFunctions":[1187],"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"1867:48:1","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1929:9:1","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"owner","nameLocation":"1947:5:1","nodeType":"VariableDeclaration","scope":265,"src":"1939:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1938:15:1"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":265,"src":"1983:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":242,"name":"uint256","nodeType":"ElementaryTypeName","src":"1983:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":278,"nodeType":"FunctionDefinition","src":"2185:118:1","nodes":[],"body":{"id":277,"nodeType":"Block","src":"2257:46:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":274,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"2288:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":273,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"2274:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":272,"id":276,"nodeType":"Return","src":"2267:29:1"}]},"baseFunctions":[1195],"documentation":{"id":266,"nodeType":"StructuredDocumentation","src":"2134:46:1","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2194:7:1","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"tokenId","nameLocation":"2210:7:1","nodeType":"VariableDeclaration","scope":278,"src":"2202:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":267,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:17:1"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"2248:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":270,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2247:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":287,"nodeType":"FunctionDefinition","src":"2365:89:1","nodes":[],"body":{"id":286,"nodeType":"Block","src":"2425:29:1","nodes":[],"statements":[{"expression":{"id":284,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"2442:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":283,"id":285,"nodeType":"Return","src":"2435:12:1"}]},"baseFunctions":[1293],"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"2309:51:1","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2374:4:1","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"2378:2:1"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":287,"src":"2410:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":281,"name":"string","nodeType":"ElementaryTypeName","src":"2410:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2409:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":296,"nodeType":"FunctionDefinition","src":"2518:93:1","nodes":[],"body":{"id":295,"nodeType":"Block","src":"2580:31:1","nodes":[],"statements":[{"expression":{"id":293,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"2597:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":292,"id":294,"nodeType":"Return","src":"2590:14:1"}]},"baseFunctions":[1299],"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"2460:53:1","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2527:6:1","parameters":{"id":289,"nodeType":"ParameterList","parameters":[],"src":"2533:2:1"},"returnParameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":296,"src":"2565:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":290,"name":"string","nodeType":"ElementaryTypeName","src":"2565:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2564:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":332,"nodeType":"FunctionDefinition","src":"2677:255:1","nodes":[],"body":{"id":331,"nodeType":"Block","src":"2756:176:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":305,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"2780:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":304,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"2766:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2766:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":307,"nodeType":"ExpressionStatement","src":"2766:22:1"},{"assignments":[309],"declarations":[{"constant":false,"id":309,"mutability":"mutable","name":"baseURI","nameLocation":"2813:7:1","nodeType":"VariableDeclaration","scope":331,"src":"2799:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":308,"name":"string","nodeType":"ElementaryTypeName","src":"2799:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"2823:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2823:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2799:34:1"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":315,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2856:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2850:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":313,"name":"bytes","nodeType":"ElementaryTypeName","src":"2850:5:1","typeDescriptions":{}}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2850:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2865:6:1","memberName":"length","nodeType":"MemberAccess","src":"2850:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2874:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2850:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2923:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2850:75:1","trueExpression":{"arguments":[{"id":323,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2892:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"2901:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2909:8:1","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1406,"src":"2901:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2878:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":320,"name":"string","nodeType":"ElementaryTypeName","src":"2878:6:1","typeDescriptions":{}}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2885:6:1","memberName":"concat","nodeType":"MemberAccess","src":"2878:13:1","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2878:42:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":303,"id":330,"nodeType":"Return","src":"2843:82:1"}]},"baseFunctions":[1307],"documentation":{"id":297,"nodeType":"StructuredDocumentation","src":"2617:55:1","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2686:8:1","parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"mutability":"mutable","name":"tokenId","nameLocation":"2703:7:1","nodeType":"VariableDeclaration","scope":332,"src":"2695:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":298,"name":"uint256","nodeType":"ElementaryTypeName","src":"2695:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:17:1"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":332,"src":"2741:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":301,"name":"string","nodeType":"ElementaryTypeName","src":"2741:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2740:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":341,"nodeType":"FunctionDefinition","src":"3174:92:1","nodes":[],"body":{"id":340,"nodeType":"Block","src":"3240:26:1","nodes":[],"statements":[{"expression":{"hexValue":"","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3257:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":337,"id":339,"nodeType":"Return","src":"3250:9:1"}]},"documentation":{"id":333,"nodeType":"StructuredDocumentation","src":"2938:231:1","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3183:8:1","parameters":{"id":334,"nodeType":"ParameterList","parameters":[],"src":"3191:2:1"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":341,"src":"3225:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":335,"name":"string","nodeType":"ElementaryTypeName","src":"3225:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3224:15:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":357,"nodeType":"FunctionDefinition","src":"3323:113:1","nodes":[],"body":{"id":356,"nodeType":"Block","src":"3384:52:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":350,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"3403:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":351,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"3407:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":352,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"3416:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3416:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":349,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":948,"src":"3394:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3394:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":355,"nodeType":"ExpressionStatement","src":"3394:35:1"}]},"baseFunctions":[1235],"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"3272:46:1","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3332:7:1","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"to","nameLocation":"3348:2:1","nodeType":"VariableDeclaration","scope":357,"src":"3340:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":343,"name":"address","nodeType":"ElementaryTypeName","src":"3340:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":346,"mutability":"mutable","name":"tokenId","nameLocation":"3360:7:1","nodeType":"VariableDeclaration","scope":357,"src":"3352:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":345,"name":"uint256","nodeType":"ElementaryTypeName","src":"3352:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3339:29:1"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[],"src":"3384:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":374,"nodeType":"FunctionDefinition","src":"3497:154:1","nodes":[],"body":{"id":373,"nodeType":"Block","src":"3573:78:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":366,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3597:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":365,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"3583:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3583:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":368,"nodeType":"ExpressionStatement","src":"3583:22:1"},{"expression":{"arguments":[{"id":370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3636:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":369,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3623:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3623:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":364,"id":372,"nodeType":"Return","src":"3616:28:1"}]},"baseFunctions":[1251],"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"3442:50:1","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3506:11:1","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:1","nodeType":"VariableDeclaration","scope":374,"src":"3518:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3517:17:1"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":374,"src":"3564:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":362,"name":"address","nodeType":"ElementaryTypeName","src":"3564:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3563:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":390,"nodeType":"FunctionDefinition","src":"3718:144:1","nodes":[],"body":{"id":389,"nodeType":"Block","src":"3793:69:1","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":383,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"3822:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":385,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":377,"src":"3836:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":386,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"3846:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":382,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"3803:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3803:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"ExpressionStatement","src":"3803:52:1"}]},"baseFunctions":[1243],"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"3657:56:1","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3727:17:1","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"operator","nameLocation":"3753:8:1","nodeType":"VariableDeclaration","scope":390,"src":"3745:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"3745:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"approved","nameLocation":"3768:8:1","nodeType":"VariableDeclaration","scope":390,"src":"3763:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":378,"name":"bool","nodeType":"ElementaryTypeName","src":"3763:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3744:33:1"},"returnParameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"3793:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":407,"nodeType":"FunctionDefinition","src":"3928:153:1","nodes":[],"body":{"id":406,"nodeType":"Block","src":"4022:59:1","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":400,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"4039:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":402,"indexExpression":{"id":401,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"4058:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4039:25:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":404,"indexExpression":{"id":403,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"4065:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4039:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":399,"id":405,"nodeType":"Return","src":"4032:42:1"}]},"baseFunctions":[1261],"documentation":{"id":391,"nodeType":"StructuredDocumentation","src":"3868:55:1","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3937:16:1","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":393,"mutability":"mutable","name":"owner","nameLocation":"3962:5:1","nodeType":"VariableDeclaration","scope":407,"src":"3954:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"3954:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":395,"mutability":"mutable","name":"operator","nameLocation":"3977:8:1","nodeType":"VariableDeclaration","scope":407,"src":"3969:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"3969:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3953:33:1"},"returnParameters":{"id":399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"4016:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":397,"name":"bool","nodeType":"ElementaryTypeName","src":"4016:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4015:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":453,"nodeType":"FunctionDefinition","src":"4143:578:1","nodes":[],"body":{"id":452,"nodeType":"Block","src":"4223:498:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":417,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"4237:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4251:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4243:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":418,"name":"address","nodeType":"ElementaryTypeName","src":"4243:7:1","typeDescriptions":{}}},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4237:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":431,"nodeType":"IfStatement","src":"4233:87:1","trueBody":{"id":430,"nodeType":"Block","src":"4255:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4306:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4298:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"4298:7:1","typeDescriptions":{}}},"id":427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4298:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":423,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"4276:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":429,"nodeType":"RevertStatement","src":"4269:40:1"}]}},{"assignments":[433],"declarations":[{"constant":false,"id":433,"mutability":"mutable","name":"previousOwner","nameLocation":"4546:13:1","nodeType":"VariableDeclaration","scope":452,"src":"4538:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":432,"name":"address","nodeType":"ElementaryTypeName","src":"4538:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":440,"initialValue":{"arguments":[{"id":435,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"4570:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":436,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"4574:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":437,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"4583:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":434,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"4562:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4538:58:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":441,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4610:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":442,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"4627:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4610:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":451,"nodeType":"IfStatement","src":"4606:109:1","trueBody":{"id":450,"nodeType":"Block","src":"4633:82:1","statements":[{"errorCall":{"arguments":[{"id":445,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":410,"src":"4675:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":446,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"4681:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":447,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4690:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":444,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"4654:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4654:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":449,"nodeType":"RevertStatement","src":"4647:57:1"}]}}]},"baseFunctions":[1227],"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"4087:51:1","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4152:12:1","parameters":{"id":415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":410,"mutability":"mutable","name":"from","nameLocation":"4173:4:1","nodeType":"VariableDeclaration","scope":453,"src":"4165:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":409,"name":"address","nodeType":"ElementaryTypeName","src":"4165:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":412,"mutability":"mutable","name":"to","nameLocation":"4187:2:1","nodeType":"VariableDeclaration","scope":453,"src":"4179:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":411,"name":"address","nodeType":"ElementaryTypeName","src":"4179:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":414,"mutability":"mutable","name":"tokenId","nameLocation":"4199:7:1","nodeType":"VariableDeclaration","scope":453,"src":"4191:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4191:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4164:43:1"},"returnParameters":{"id":416,"nodeType":"ParameterList","parameters":[],"src":"4223:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":471,"nodeType":"FunctionDefinition","src":"4787:132:1","nodes":[],"body":{"id":470,"nodeType":"Block","src":"4863:56:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":464,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"4890:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":465,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"4896:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"4900:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4909:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":463,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[471,497],"referencedDeclaration":497,"src":"4873:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":469,"nodeType":"ExpressionStatement","src":"4873:39:1"}]},"baseFunctions":[1217],"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"4727:55:1","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4796:16:1","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"from","nameLocation":"4821:4:1","nodeType":"VariableDeclaration","scope":471,"src":"4813:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"to","nameLocation":"4835:2:1","nodeType":"VariableDeclaration","scope":471,"src":"4827:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"tokenId","nameLocation":"4847:7:1","nodeType":"VariableDeclaration","scope":471,"src":"4839:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4839:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4812:43:1"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[],"src":"4863:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":497,"nodeType":"FunctionDefinition","src":"4985:208:1","nodes":[],"body":{"id":496,"nodeType":"Block","src":"5088:105:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":484,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"5111:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":485,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"5117:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"5121:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":483,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"5098:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5098:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5098:31:1"},{"expression":{"arguments":[{"id":490,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"5162:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":491,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"5168:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":492,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"5172:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":493,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"5181:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":489,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"5139:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"5139:47:1"}]},"baseFunctions":[1207],"documentation":{"id":472,"nodeType":"StructuredDocumentation","src":"4925:55:1","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4994:16:1","parameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":474,"mutability":"mutable","name":"from","nameLocation":"5019:4:1","nodeType":"VariableDeclaration","scope":497,"src":"5011:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":473,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":476,"mutability":"mutable","name":"to","nameLocation":"5033:2:1","nodeType":"VariableDeclaration","scope":497,"src":"5025:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":475,"name":"address","nodeType":"ElementaryTypeName","src":"5025:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"tokenId","nameLocation":"5045:7:1","nodeType":"VariableDeclaration","scope":497,"src":"5037:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":477,"name":"uint256","nodeType":"ElementaryTypeName","src":"5037:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"data","nameLocation":"5067:4:1","nodeType":"VariableDeclaration","scope":497,"src":"5054:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":479,"name":"bytes","nodeType":"ElementaryTypeName","src":"5054:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5010:62:1"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5088:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":510,"nodeType":"FunctionDefinition","src":"5707:115:1","nodes":[],"body":{"id":509,"nodeType":"Block","src":"5782:40:1","nodes":[],"statements":[{"expression":{"baseExpression":{"id":505,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"5799:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":507,"indexExpression":{"id":506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":500,"src":"5807:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5799:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":504,"id":508,"nodeType":"Return","src":"5792:23:1"}]},"documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"5199:503:1","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"5716:8:1","parameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"tokenId","nameLocation":"5733:7:1","nodeType":"VariableDeclaration","scope":510,"src":"5725:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5724:17:1"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":510,"src":"5773:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"5773:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5772:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":523,"nodeType":"FunctionDefinition","src":"5938:127:1","nodes":[],"body":{"id":522,"nodeType":"Block","src":"6017:48:1","nodes":[],"statements":[{"expression":{"baseExpression":{"id":518,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"6034:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":520,"indexExpression":{"id":519,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":513,"src":"6050:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6034:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":517,"id":521,"nodeType":"Return","src":"6027:31:1"}]},"documentation":{"id":511,"nodeType":"StructuredDocumentation","src":"5828:105:1","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"5947:12:1","parameters":{"id":514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"mutability":"mutable","name":"tokenId","nameLocation":"5968:7:1","nodeType":"VariableDeclaration","scope":523,"src":"5960:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":512,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5959:17:1"},"returnParameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":523,"src":"6008:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":515,"name":"address","nodeType":"ElementaryTypeName","src":"6008:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6007:9:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":559,"nodeType":"FunctionDefinition","src":"6376:272:1","nodes":[],"body":{"id":558,"nodeType":"Block","src":"6485:163:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":535,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6514:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6533:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6525:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"6525:7:1","typeDescriptions":{}}},"id":539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6525:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6514:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":541,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"6552:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":542,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6561:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6552:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":545,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"6589:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":546,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6596:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":544,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6572:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6572:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6552:52:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"6621:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":549,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"6608:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":552,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"6633:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6608:32:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6552:88:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":555,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6551:90:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6514:127:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":534,"id":557,"nodeType":"Return","src":"6495:146:1"}]},"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"6071:300:1","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"6385:13:1","parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"owner","nameLocation":"6407:5:1","nodeType":"VariableDeclaration","scope":559,"src":"6399:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"6399:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"spender","nameLocation":"6422:7:1","nodeType":"VariableDeclaration","scope":559,"src":"6414:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"6414:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"tokenId","nameLocation":"6439:7:1","nodeType":"VariableDeclaration","scope":559,"src":"6431:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6398:49:1"},"returnParameters":{"id":534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":559,"src":"6479:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":532,"name":"bool","nodeType":"ElementaryTypeName","src":"6479:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6478:6:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":596,"nodeType":"FunctionDefinition","src":"7082:368:1","nodes":[],"body":{"id":595,"nodeType":"Block","src":"7179:271:1","nodes":[],"statements":[{"condition":{"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7193:39:1","subExpression":{"arguments":[{"id":570,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7208:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":571,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7215:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":572,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7224:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":569,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"7194:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7194:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":594,"nodeType":"IfStatement","src":"7189:255:1","trueBody":{"id":593,"nodeType":"Block","src":"7234:210:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":575,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7252:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7269:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:1","typeDescriptions":{}}},"id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7261:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7252:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":591,"nodeType":"Block","src":"7350:84:1","statements":[{"errorCall":{"arguments":[{"id":587,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7402:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":588,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7411:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":586,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"7375:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7375:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"7368:51:1"}]},"id":592,"nodeType":"IfStatement","src":"7248:186:1","trueBody":{"id":585,"nodeType":"Block","src":"7273:71:1","statements":[{"errorCall":{"arguments":[{"id":582,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"7321:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":581,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"7298:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7298:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":584,"nodeType":"RevertStatement","src":"7291:38:1"}]}}]}}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"6654:423:1","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"7091:16:1","parameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"owner","nameLocation":"7116:5:1","nodeType":"VariableDeclaration","scope":596,"src":"7108:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":564,"mutability":"mutable","name":"spender","nameLocation":"7131:7:1","nodeType":"VariableDeclaration","scope":596,"src":"7123:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"7123:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":566,"mutability":"mutable","name":"tokenId","nameLocation":"7148:7:1","nodeType":"VariableDeclaration","scope":596,"src":"7140:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7107:49:1"},"returnParameters":{"id":568,"nodeType":"ParameterList","parameters":[],"src":"7179:0:1"},"scope":1145,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":612,"nodeType":"FunctionDefinition","src":"8092:153:1","nodes":[],"body":{"id":611,"nodeType":"Block","src":"8167:78:1","nodes":[],"statements":[{"id":610,"nodeType":"UncheckedBlock","src":"8177:62:1","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":604,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"8201:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":606,"indexExpression":{"id":605,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"8211:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8201:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"8223:5:1","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8201:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"8201:27:1"}]}]},"documentation":{"id":597,"nodeType":"StructuredDocumentation","src":"7456:631:1","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"8101:16:1","parameters":{"id":602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"account","nameLocation":"8126:7:1","nodeType":"VariableDeclaration","scope":612,"src":"8118:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":598,"name":"address","nodeType":"ElementaryTypeName","src":"8118:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":601,"mutability":"mutable","name":"value","nameLocation":"8143:5:1","nodeType":"VariableDeclaration","scope":612,"src":"8135:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":600,"name":"uint128","nodeType":"ElementaryTypeName","src":"8135:7:1","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"8117:32:1"},"returnParameters":{"id":603,"nodeType":"ParameterList","parameters":[],"src":"8167:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":702,"nodeType":"FunctionDefinition","src":"8838:795:1","nodes":[],"body":{"id":701,"nodeType":"Block","src":"8933:700:1","nodes":[],"statements":[{"assignments":[625],"declarations":[{"constant":false,"id":625,"mutability":"mutable","name":"from","nameLocation":"8951:4:1","nodeType":"VariableDeclaration","scope":701,"src":"8943:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":624,"name":"address","nodeType":"ElementaryTypeName","src":"8943:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":629,"initialValue":{"arguments":[{"id":627,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"8967:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":626,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"8958:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8958:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8943:32:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":630,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"9035:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9051:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9043:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"9043:7:1","typeDescriptions":{}}},"id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9043:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9035:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":643,"nodeType":"IfStatement","src":"9031:86:1","trueBody":{"id":642,"nodeType":"Block","src":"9055:62:1","statements":[{"expression":{"arguments":[{"id":637,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9086:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":638,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"9092:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":639,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9098:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":636,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"9069:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9069:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":641,"nodeType":"ExpressionStatement","src":"9069:37:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":644,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9161:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9177:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9169:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"9169:7:1","typeDescriptions":{}}},"id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9169:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9161:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":671,"nodeType":"IfStatement","src":"9157:256:1","trueBody":{"id":670,"nodeType":"Block","src":"9181:232:1","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9294:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9286:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":651,"name":"address","nodeType":"ElementaryTypeName","src":"9286:7:1","typeDescriptions":{}}},"id":654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":655,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9298:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9315:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9307:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":656,"name":"address","nodeType":"ElementaryTypeName","src":"9307:7:1","typeDescriptions":{}}},"id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9307:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9319:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":650,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":1014,"src":"9277:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9277:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"9277:48:1"},{"id":669,"nodeType":"UncheckedBlock","src":"9340:63:1","statements":[{"expression":{"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":663,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"9368:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":665,"indexExpression":{"id":664,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9378:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9368:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9387:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9368:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":668,"nodeType":"ExpressionStatement","src":"9368:20:1"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":672,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9427:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9441:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9433:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":673,"name":"address","nodeType":"ElementaryTypeName","src":"9433:7:1","typeDescriptions":{}}},"id":676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9433:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9427:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":686,"nodeType":"IfStatement","src":"9423:107:1","trueBody":{"id":685,"nodeType":"Block","src":"9445:85:1","statements":[{"id":684,"nodeType":"UncheckedBlock","src":"9459:61:1","statements":[{"expression":{"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":678,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"9487:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":680,"indexExpression":{"id":679,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9497:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9487:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9504:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9487:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":683,"nodeType":"ExpressionStatement","src":"9487:18:1"}]}]}},{"expression":{"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":687,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"9540:7:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":689,"indexExpression":{"id":688,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9548:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9540:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":690,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9559:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9540:21:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":692,"nodeType":"ExpressionStatement","src":"9540:21:1"},{"eventCall":{"arguments":[{"id":694,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9586:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":695,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"9592:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":696,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9596:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":693,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"9577:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9577:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":698,"nodeType":"EmitStatement","src":"9572:32:1"},{"expression":{"id":699,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"9622:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":623,"id":700,"nodeType":"Return","src":"9615:11:1"}]},"documentation":{"id":613,"nodeType":"StructuredDocumentation","src":"8251:582:1","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"8847:7:1","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":615,"mutability":"mutable","name":"to","nameLocation":"8863:2:1","nodeType":"VariableDeclaration","scope":702,"src":"8855:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":614,"name":"address","nodeType":"ElementaryTypeName","src":"8855:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"tokenId","nameLocation":"8875:7:1","nodeType":"VariableDeclaration","scope":702,"src":"8867:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":616,"name":"uint256","nodeType":"ElementaryTypeName","src":"8867:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":619,"mutability":"mutable","name":"auth","nameLocation":"8892:4:1","nodeType":"VariableDeclaration","scope":702,"src":"8884:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"8884:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8854:43:1"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":702,"src":"8924:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":621,"name":"address","nodeType":"ElementaryTypeName","src":"8924:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8923:9:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":752,"nodeType":"FunctionDefinition","src":"9955:327:1","nodes":[],"body":{"id":751,"nodeType":"Block","src":"10008:274:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":710,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"10022:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10028:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":711,"name":"address","nodeType":"ElementaryTypeName","src":"10028:7:1","typeDescriptions":{}}},"id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10028:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10022:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":724,"nodeType":"IfStatement","src":"10018:87:1","trueBody":{"id":723,"nodeType":"Block","src":"10040:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10091:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10083:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":717,"name":"address","nodeType":"ElementaryTypeName","src":"10083:7:1","typeDescriptions":{}}},"id":720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10083:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":716,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"10061:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10061:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":722,"nodeType":"RevertStatement","src":"10054:40:1"}]}},{"assignments":[726],"declarations":[{"constant":false,"id":726,"mutability":"mutable","name":"previousOwner","nameLocation":"10122:13:1","nodeType":"VariableDeclaration","scope":751,"src":"10114:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"10114:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":735,"initialValue":{"arguments":[{"id":728,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"10146:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":729,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"10150:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10159:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"10159:7:1","typeDescriptions":{}}},"id":733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10159:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":727,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"10138:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10138:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10114:56:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":736,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"10184:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10209:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10201:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":737,"name":"address","nodeType":"ElementaryTypeName","src":"10201:7:1","typeDescriptions":{}}},"id":740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10201:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10184:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":750,"nodeType":"IfStatement","src":"10180:96:1","trueBody":{"id":749,"nodeType":"Block","src":"10213:63:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10262:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10254:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"10254:7:1","typeDescriptions":{}}},"id":746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10254:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":742,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"10234:19:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":748,"nodeType":"RevertStatement","src":"10227:38:1"}]}}]},"documentation":{"id":703,"nodeType":"StructuredDocumentation","src":"9639:311:1","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9964:5:1","parameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"to","nameLocation":"9978:2:1","nodeType":"VariableDeclaration","scope":752,"src":"9970:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":704,"name":"address","nodeType":"ElementaryTypeName","src":"9970:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":707,"mutability":"mutable","name":"tokenId","nameLocation":"9990:7:1","nodeType":"VariableDeclaration","scope":752,"src":"9982:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":706,"name":"uint256","nodeType":"ElementaryTypeName","src":"9982:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9969:29:1"},"returnParameters":{"id":709,"nodeType":"ParameterList","parameters":[],"src":"10008:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":767,"nodeType":"FunctionDefinition","src":"10633:100:1","nodes":[],"body":{"id":766,"nodeType":"Block","src":"10690:43:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":761,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"10710:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":762,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"10714:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10723:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":760,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":793,"src":"10700:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10700:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":765,"nodeType":"ExpressionStatement","src":"10700:26:1"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"10288:340:1","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10642:9:1","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"to","nameLocation":"10660:2:1","nodeType":"VariableDeclaration","scope":767,"src":"10652:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"10652:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"tokenId","nameLocation":"10672:7:1","nodeType":"VariableDeclaration","scope":767,"src":"10664:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":756,"name":"uint256","nodeType":"ElementaryTypeName","src":"10664:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10651:29:1"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"10690:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":793,"nodeType":"FunctionDefinition","src":"10954:182:1","nodes":[],"body":{"id":792,"nodeType":"Block","src":"11038:98:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":778,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"11054:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":779,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"11058:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":777,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"11048:5:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11048:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":781,"nodeType":"ExpressionStatement","src":"11048:18:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11107:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11099:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"11099:7:1","typeDescriptions":{}}},"id":786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11099:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":787,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":770,"src":"11111:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":788,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":772,"src":"11115:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":789,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"11124:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":782,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"11076:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11076:53:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":791,"nodeType":"ExpressionStatement","src":"11076:53:1"}]},"documentation":{"id":768,"nodeType":"StructuredDocumentation","src":"10739:210:1","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10963:9:1","parameters":{"id":775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"to","nameLocation":"10981:2:1","nodeType":"VariableDeclaration","scope":793,"src":"10973:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"10973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"tokenId","nameLocation":"10993:7:1","nodeType":"VariableDeclaration","scope":793,"src":"10985:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"10985:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":774,"mutability":"mutable","name":"data","nameLocation":"11015:4:1","nodeType":"VariableDeclaration","scope":793,"src":"11002:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":773,"name":"bytes","nodeType":"ElementaryTypeName","src":"11002:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10972:48:1"},"returnParameters":{"id":776,"nodeType":"ParameterList","parameters":[],"src":"11038:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":826,"nodeType":"FunctionDefinition","src":"11462:227:1","nodes":[],"body":{"id":825,"nodeType":"Block","src":"11503:186:1","nodes":[],"statements":[{"assignments":[800],"declarations":[{"constant":false,"id":800,"mutability":"mutable","name":"previousOwner","nameLocation":"11521:13:1","nodeType":"VariableDeclaration","scope":825,"src":"11513:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":799,"name":"address","nodeType":"ElementaryTypeName","src":"11513:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11553:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11545:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":802,"name":"address","nodeType":"ElementaryTypeName","src":"11545:7:1","typeDescriptions":{}}},"id":805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11545:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":806,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"11557:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11566:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"11566:7:1","typeDescriptions":{}}},"id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11566:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":801,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"11537:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11537:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11513:64:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":813,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"11591:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11608:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"11608:7:1","typeDescriptions":{}}},"id":817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11608:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11591:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":824,"nodeType":"IfStatement","src":"11587:96:1","trueBody":{"id":823,"nodeType":"Block","src":"11620:63:1","statements":[{"errorCall":{"arguments":[{"id":820,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"11664:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":819,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"11641:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11641:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"RevertStatement","src":"11634:38:1"}]}}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"11142:315:1","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11471:5:1","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"tokenId","nameLocation":"11485:7:1","nodeType":"VariableDeclaration","scope":826,"src":"11477:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"11477:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11476:17:1"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[],"src":"11503:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":886,"nodeType":"FunctionDefinition","src":"12013:460:1","nodes":[],"body":{"id":885,"nodeType":"Block","src":"12084:389:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"12098:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12104:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":837,"name":"address","nodeType":"ElementaryTypeName","src":"12104:7:1","typeDescriptions":{}}},"id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12104:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12098:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":850,"nodeType":"IfStatement","src":"12094:87:1","trueBody":{"id":849,"nodeType":"Block","src":"12116:65:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12167:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12159:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":843,"name":"address","nodeType":"ElementaryTypeName","src":"12159:7:1","typeDescriptions":{}}},"id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12159:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":842,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"12137:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12137:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":848,"nodeType":"RevertStatement","src":"12130:40:1"}]}},{"assignments":[852],"declarations":[{"constant":false,"id":852,"mutability":"mutable","name":"previousOwner","nameLocation":"12198:13:1","nodeType":"VariableDeclaration","scope":885,"src":"12190:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"12190:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":861,"initialValue":{"arguments":[{"id":854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"12222:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12226:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12243:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12235:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":856,"name":"address","nodeType":"ElementaryTypeName","src":"12235:7:1","typeDescriptions":{}}},"id":859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12235:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":853,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"12214:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12214:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12190:56:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":862,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12260:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12277:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":863,"name":"address","nodeType":"ElementaryTypeName","src":"12277:7:1","typeDescriptions":{}}},"id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12260:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":873,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12362:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":874,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"12379:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12362:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":883,"nodeType":"IfStatement","src":"12358:109:1","trueBody":{"id":882,"nodeType":"Block","src":"12385:82:1","statements":[{"errorCall":{"arguments":[{"id":877,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"12427:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":878,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12433:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":879,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"12442:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":876,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"12406:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12406:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":881,"nodeType":"RevertStatement","src":"12399:57:1"}]}},"id":884,"nodeType":"IfStatement","src":"12256:211:1","trueBody":{"id":872,"nodeType":"Block","src":"12289:63:1","statements":[{"errorCall":{"arguments":[{"id":869,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"12333:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":868,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"12310:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12310:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":871,"nodeType":"RevertStatement","src":"12303:38:1"}]}}]},"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"11695:313:1","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"12022:9:1","parameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"from","nameLocation":"12040:4:1","nodeType":"VariableDeclaration","scope":886,"src":"12032:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":828,"name":"address","nodeType":"ElementaryTypeName","src":"12032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":831,"mutability":"mutable","name":"to","nameLocation":"12054:2:1","nodeType":"VariableDeclaration","scope":886,"src":"12046:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":830,"name":"address","nodeType":"ElementaryTypeName","src":"12046:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":833,"mutability":"mutable","name":"tokenId","nameLocation":"12066:7:1","nodeType":"VariableDeclaration","scope":886,"src":"12058:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":832,"name":"uint256","nodeType":"ElementaryTypeName","src":"12058:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12031:43:1"},"returnParameters":{"id":835,"nodeType":"ParameterList","parameters":[],"src":"12084:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":904,"nodeType":"FunctionDefinition","src":"13406:128:1","nodes":[],"body":{"id":903,"nodeType":"Block","src":"13481:53:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":897,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"13505:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":898,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"13511:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":899,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"13515:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13524:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":896,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[904,930],"referencedDeclaration":930,"src":"13491:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13491:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":902,"nodeType":"ExpressionStatement","src":"13491:36:1"}]},"documentation":{"id":887,"nodeType":"StructuredDocumentation","src":"12479:922:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13415:13:1","parameters":{"id":894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"from","nameLocation":"13437:4:1","nodeType":"VariableDeclaration","scope":904,"src":"13429:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":888,"name":"address","nodeType":"ElementaryTypeName","src":"13429:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"to","nameLocation":"13451:2:1","nodeType":"VariableDeclaration","scope":904,"src":"13443:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"13443:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"tokenId","nameLocation":"13463:7:1","nodeType":"VariableDeclaration","scope":904,"src":"13455:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":892,"name":"uint256","nodeType":"ElementaryTypeName","src":"13455:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13428:43:1"},"returnParameters":{"id":895,"nodeType":"ParameterList","parameters":[],"src":"13481:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":930,"nodeType":"FunctionDefinition","src":"13771:204:1","nodes":[],"body":{"id":929,"nodeType":"Block","src":"13873:102:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":917,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"13893:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":918,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"13899:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":919,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"13903:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":916,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":886,"src":"13883:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13883:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"ExpressionStatement","src":"13883:28:1"},{"expression":{"arguments":[{"id":923,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"13944:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":924,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"13950:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":925,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"13954:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":926,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"13963:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":922,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"13921:22:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":928,"nodeType":"ExpressionStatement","src":"13921:47:1"}]},"documentation":{"id":905,"nodeType":"StructuredDocumentation","src":"13540:226:1","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13780:13:1","parameters":{"id":914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":907,"mutability":"mutable","name":"from","nameLocation":"13802:4:1","nodeType":"VariableDeclaration","scope":930,"src":"13794:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":906,"name":"address","nodeType":"ElementaryTypeName","src":"13794:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"to","nameLocation":"13816:2:1","nodeType":"VariableDeclaration","scope":930,"src":"13808:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":908,"name":"address","nodeType":"ElementaryTypeName","src":"13808:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":911,"mutability":"mutable","name":"tokenId","nameLocation":"13828:7:1","nodeType":"VariableDeclaration","scope":930,"src":"13820:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"13820:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":913,"mutability":"mutable","name":"data","nameLocation":"13850:4:1","nodeType":"VariableDeclaration","scope":930,"src":"13837:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":912,"name":"bytes","nodeType":"ElementaryTypeName","src":"13837:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13793:62:1"},"returnParameters":{"id":915,"nodeType":"ParameterList","parameters":[],"src":"13873:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":948,"nodeType":"FunctionDefinition","src":"14418:120:1","nodes":[],"body":{"id":947,"nodeType":"Block","src":"14488:50:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":941,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"14507:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":942,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"14511:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":943,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"14520:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14526:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":940,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[948,1014],"referencedDeclaration":1014,"src":"14498:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14498:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":946,"nodeType":"ExpressionStatement","src":"14498:33:1"}]},"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"13981:432:1","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14427:8:1","parameters":{"id":938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":933,"mutability":"mutable","name":"to","nameLocation":"14444:2:1","nodeType":"VariableDeclaration","scope":948,"src":"14436:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"14436:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":935,"mutability":"mutable","name":"tokenId","nameLocation":"14456:7:1","nodeType":"VariableDeclaration","scope":948,"src":"14448:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":934,"name":"uint256","nodeType":"ElementaryTypeName","src":"14448:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":937,"mutability":"mutable","name":"auth","nameLocation":"14473:4:1","nodeType":"VariableDeclaration","scope":948,"src":"14465:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"14465:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14435:43:1"},"returnParameters":{"id":939,"nodeType":"ParameterList","parameters":[],"src":"14488:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1014,"nodeType":"FunctionDefinition","src":"14720:662:1","nodes":[],"body":{"id":1013,"nodeType":"Block","src":"14814:568:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":960,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"14880:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":961,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"14893:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14909:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14901:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":962,"name":"address","nodeType":"ElementaryTypeName","src":"14901:7:1","typeDescriptions":{}}},"id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14901:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14893:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14880:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1006,"nodeType":"IfStatement","src":"14876:460:1","trueBody":{"id":1005,"nodeType":"Block","src":"14913:423:1","statements":[{"assignments":[969],"declarations":[{"constant":false,"id":969,"mutability":"mutable","name":"owner","nameLocation":"14935:5:1","nodeType":"VariableDeclaration","scope":1005,"src":"14927:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":968,"name":"address","nodeType":"ElementaryTypeName","src":"14927:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":973,"initialValue":{"arguments":[{"id":971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"14957:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":970,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"14943:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14943:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14927:38:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":974,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15093:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15109:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15101:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":975,"name":"address","nodeType":"ElementaryTypeName","src":"15101:7:1","typeDescriptions":{}}},"id":978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15101:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15093:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":980,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15115:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":981,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15124:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15115:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15093:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15132:30:1","subExpression":{"arguments":[{"id":985,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15150:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":986,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15157:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":984,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"15133:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15133:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15093:69:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":995,"nodeType":"IfStatement","src":"15089:142:1","trueBody":{"id":994,"nodeType":"Block","src":"15164:67:1","statements":[{"errorCall":{"arguments":[{"id":991,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"15211:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":990,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"15189:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15189:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":993,"nodeType":"RevertStatement","src":"15182:34:1"}]}},{"condition":{"id":996,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"15249:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1004,"nodeType":"IfStatement","src":"15245:81:1","trueBody":{"id":1003,"nodeType":"Block","src":"15260:66:1","statements":[{"eventCall":{"arguments":[{"id":998,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"15292:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":999,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"15299:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1000,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15303:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":997,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"15283:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15283:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1002,"nodeType":"EmitStatement","src":"15278:33:1"}]}}]}},{"expression":{"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1007,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"15346:15:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1009,"indexExpression":{"id":1008,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"15362:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15346:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1010,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"15373:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15346:29:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1012,"nodeType":"ExpressionStatement","src":"15346:29:1"}]},"documentation":{"id":949,"nodeType":"StructuredDocumentation","src":"14544:171:1","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14729:8:1","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":951,"mutability":"mutable","name":"to","nameLocation":"14746:2:1","nodeType":"VariableDeclaration","scope":1014,"src":"14738:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"14738:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":953,"mutability":"mutable","name":"tokenId","nameLocation":"14758:7:1","nodeType":"VariableDeclaration","scope":1014,"src":"14750:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":952,"name":"uint256","nodeType":"ElementaryTypeName","src":"14750:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"auth","nameLocation":"14775:4:1","nodeType":"VariableDeclaration","scope":1014,"src":"14767:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"14767:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"emitEvent","nameLocation":"14786:9:1","nodeType":"VariableDeclaration","scope":1014,"src":"14781:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":956,"name":"bool","nodeType":"ElementaryTypeName","src":"14781:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14737:59:1"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[],"src":"14814:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1051,"nodeType":"FunctionDefinition","src":"15591:312:1","nodes":[],"body":{"id":1050,"nodeType":"Block","src":"15684:219:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1024,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15698:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15718:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15710:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1025,"name":"address","nodeType":"ElementaryTypeName","src":"15710:7:1","typeDescriptions":{}}},"id":1028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15710:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15698:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1035,"nodeType":"IfStatement","src":"15694:91:1","trueBody":{"id":1034,"nodeType":"Block","src":"15722:63:1","statements":[{"errorCall":{"arguments":[{"id":1031,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15765:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1030,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"15743:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15743:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1033,"nodeType":"RevertStatement","src":"15736:38:1"}]}},{"expression":{"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1036,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"15794:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1039,"indexExpression":{"id":1037,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"15813:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15794:25:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1040,"indexExpression":{"id":1038,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15820:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15794:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1041,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"15832:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15794:46:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1043,"nodeType":"ExpressionStatement","src":"15794:46:1"},{"eventCall":{"arguments":[{"id":1045,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"15870:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1046,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"15877:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1047,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"15887:8:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1044,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"15855:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15855:41:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1049,"nodeType":"EmitStatement","src":"15850:46:1"}]},"documentation":{"id":1015,"nodeType":"StructuredDocumentation","src":"15388:198:1","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"15600:18:1","parameters":{"id":1022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"owner","nameLocation":"15627:5:1","nodeType":"VariableDeclaration","scope":1051,"src":"15619:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"15619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"operator","nameLocation":"15642:8:1","nodeType":"VariableDeclaration","scope":1051,"src":"15634:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1018,"name":"address","nodeType":"ElementaryTypeName","src":"15634:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1021,"mutability":"mutable","name":"approved","nameLocation":"15657:8:1","nodeType":"VariableDeclaration","scope":1051,"src":"15652:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1020,"name":"bool","nodeType":"ElementaryTypeName","src":"15652:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15618:48:1"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[],"src":"15684:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1080,"nodeType":"FunctionDefinition","src":"16138:241:1","nodes":[],"body":{"id":1079,"nodeType":"Block","src":"16210:169:1","nodes":[],"statements":[{"assignments":[1060],"declarations":[{"constant":false,"id":1060,"mutability":"mutable","name":"owner","nameLocation":"16228:5:1","nodeType":"VariableDeclaration","scope":1079,"src":"16220:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1059,"name":"address","nodeType":"ElementaryTypeName","src":"16220:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1064,"initialValue":{"arguments":[{"id":1062,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"16245:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1061,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"16236:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16236:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16220:33:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1065,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"16267:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16284:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16276:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1066,"name":"address","nodeType":"ElementaryTypeName","src":"16276:7:1","typeDescriptions":{}}},"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16276:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16267:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1076,"nodeType":"IfStatement","src":"16263:88:1","trueBody":{"id":1075,"nodeType":"Block","src":"16288:63:1","statements":[{"errorCall":{"arguments":[{"id":1072,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"16332:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1071,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"16309:22:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16309:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1074,"nodeType":"RevertStatement","src":"16302:38:1"}]}},{"expression":{"id":1077,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"16367:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1058,"id":1078,"nodeType":"Return","src":"16360:12:1"}]},"documentation":{"id":1052,"nodeType":"StructuredDocumentation","src":"15909:224:1","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"16147:13:1","parameters":{"id":1055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1054,"mutability":"mutable","name":"tokenId","nameLocation":"16169:7:1","nodeType":"VariableDeclaration","scope":1080,"src":"16161:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"16161:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16160:17:1"},"returnParameters":{"id":1058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1080,"src":"16201:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1056,"name":"address","nodeType":"ElementaryTypeName","src":"16201:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16200:9:1"},"scope":1145,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1144,"nodeType":"FunctionDefinition","src":"16918:782:1","nodes":[],"body":{"id":1143,"nodeType":"Block","src":"17020:680:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1092,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17034:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17037:4:1","memberName":"code","nodeType":"MemberAccess","src":"17034:7:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17042:6:1","memberName":"length","nodeType":"MemberAccess","src":"17034:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17051:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17034:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1142,"nodeType":"IfStatement","src":"17030:664:1","trueBody":{"id":1141,"nodeType":"Block","src":"17054:640:1","statements":[{"clauses":[{"block":{"id":1121,"nodeType":"Block","src":"17168:162:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1110,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1108,"src":"17190:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":1111,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"17200:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1280_$","typeString":"type(contract IERC721Receiver)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17216:16:1","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1279,"src":"17200:32:1","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17233:8:1","memberName":"selector","nodeType":"MemberAccess","src":"17200:41:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"17190:51:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1120,"nodeType":"IfStatement","src":"17186:130:1","trueBody":{"id":1119,"nodeType":"Block","src":"17243:73:1","statements":[{"errorCall":{"arguments":[{"id":1116,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17294:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1115,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"17272:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17272:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1118,"nodeType":"RevertStatement","src":"17265:32:1"}]}}]},"errorName":"","id":1122,"nodeType":"TryCatchClause","parameters":{"id":1109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1108,"mutability":"mutable","name":"retval","nameLocation":"17160:6:1","nodeType":"VariableDeclaration","scope":1122,"src":"17153:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1107,"name":"bytes4","nodeType":"ElementaryTypeName","src":"17153:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"17152:15:1"},"src":"17144:186:1"},{"block":{"id":1138,"nodeType":"Block","src":"17359:325:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1126,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1124,"src":"17381:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17388:6:1","memberName":"length","nodeType":"MemberAccess","src":"17381:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17398:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17381:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1136,"nodeType":"Block","src":"17480:190:1","statements":[{"AST":{"nativeSrc":"17566:86:1","nodeType":"YulBlock","src":"17566:86:1","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17603:2:1","nodeType":"YulLiteral","src":"17603:2:1","type":"","value":"32"},{"name":"reason","nativeSrc":"17607:6:1","nodeType":"YulIdentifier","src":"17607:6:1"}],"functionName":{"name":"add","nativeSrc":"17599:3:1","nodeType":"YulIdentifier","src":"17599:3:1"},"nativeSrc":"17599:15:1","nodeType":"YulFunctionCall","src":"17599:15:1"},{"arguments":[{"name":"reason","nativeSrc":"17622:6:1","nodeType":"YulIdentifier","src":"17622:6:1"}],"functionName":{"name":"mload","nativeSrc":"17616:5:1","nodeType":"YulIdentifier","src":"17616:5:1"},"nativeSrc":"17616:13:1","nodeType":"YulFunctionCall","src":"17616:13:1"}],"functionName":{"name":"revert","nativeSrc":"17592:6:1","nodeType":"YulIdentifier","src":"17592:6:1"},"nativeSrc":"17592:38:1","nodeType":"YulFunctionCall","src":"17592:38:1"},"nativeSrc":"17592:38:1","nodeType":"YulExpressionStatement","src":"17592:38:1"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1124,"isOffset":false,"isSlot":false,"src":"17607:6:1","valueSize":1},{"declaration":1124,"isOffset":false,"isSlot":false,"src":"17622:6:1","valueSize":1}],"id":1135,"nodeType":"InlineAssembly","src":"17557:95:1"}]},"id":1137,"nodeType":"IfStatement","src":"17377:293:1","trueBody":{"id":1134,"nodeType":"Block","src":"17401:73:1","statements":[{"errorCall":{"arguments":[{"id":1131,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17452:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1130,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"17430:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17430:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1133,"nodeType":"RevertStatement","src":"17423:32:1"}]}}]},"errorName":"","id":1139,"nodeType":"TryCatchClause","parameters":{"id":1125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1124,"mutability":"mutable","name":"reason","nameLocation":"17351:6:1","nodeType":"VariableDeclaration","scope":1139,"src":"17338:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1123,"name":"bytes","nodeType":"ElementaryTypeName","src":"17338:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17337:21:1"},"src":"17331:353:1"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1101,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"17109:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17109:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1103,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"17123:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1104,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"17129:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1105,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"17138:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":1098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17088:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1097,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"17072:15:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1280_$","typeString":"type(contract IERC721Receiver)"}},"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17072:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1280","typeString":"contract IERC721Receiver"}},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17092:16:1","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1279,"src":"17072:36:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17072:71:1","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1140,"nodeType":"TryStatement","src":"17068:616:1"}]}}]},"documentation":{"id":1081,"nodeType":"StructuredDocumentation","src":"16385:528:1","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"16927:22:1","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"mutability":"mutable","name":"from","nameLocation":"16958:4:1","nodeType":"VariableDeclaration","scope":1144,"src":"16950:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1082,"name":"address","nodeType":"ElementaryTypeName","src":"16950:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1085,"mutability":"mutable","name":"to","nameLocation":"16972:2:1","nodeType":"VariableDeclaration","scope":1144,"src":"16964:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1084,"name":"address","nodeType":"ElementaryTypeName","src":"16964:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1087,"mutability":"mutable","name":"tokenId","nameLocation":"16984:7:1","nodeType":"VariableDeclaration","scope":1144,"src":"16976:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1086,"name":"uint256","nodeType":"ElementaryTypeName","src":"16976:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1089,"mutability":"mutable","name":"data","nameLocation":"17006:4:1","nodeType":"VariableDeclaration","scope":1144,"src":"16993:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1088,"name":"bytes","nodeType":"ElementaryTypeName","src":"16993:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16949:62:1"},"returnParameters":{"id":1091,"nodeType":"ParameterList","parameters":[],"src":"17020:0:1"},"scope":1145,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":155,"name":"Context","nameLocations":["804:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1338,"src":"804:7:1"},"id":156,"nodeType":"InheritanceSpecifier","src":"804:7:1"},{"baseName":{"id":157,"name":"ERC165","nameLocations":["813:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1617,"src":"813:6:1"},"id":158,"nodeType":"InheritanceSpecifier","src":"813:6:1"},{"baseName":{"id":159,"name":"IERC721","nameLocations":["821:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":1262,"src":"821:7:1"},"id":160,"nodeType":"InheritanceSpecifier","src":"821:7:1"},{"baseName":{"id":161,"name":"IERC721Metadata","nameLocations":["830:15:1"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"830:15:1"},"id":162,"nodeType":"InheritanceSpecifier","src":"830:15:1"},{"baseName":{"id":163,"name":"IERC721Errors","nameLocations":["847:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"847:13:1"},"id":164,"nodeType":"InheritanceSpecifier","src":"847:13:1"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"529:246:1","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[1145,89,1308,1262,1617,1629,1338],"name":"ERC721","nameLocation":"794:6:1","scope":1146,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":1} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json b/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json deleted file mode 100644 index 9598489..0000000 --- a/examples/on-chain_mnist/contracts/out/IERC165.sol/IERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","id":1630,"exportedSymbols":{"IERC165":[1629]},"nodeType":"SourceUnit","src":"115:754:8","nodes":[{"id":1619,"nodeType":"PragmaDirective","src":"115:24:8","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1629,"nodeType":"ContractDefinition","src":"421:447:8","nodes":[{"id":1628,"nodeType":"FunctionDefinition","src":"790:76:8","nodes":[],"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"445:340:8","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:8","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1623,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:8","nodeType":"VariableDeclaration","scope":1628,"src":"817:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1622,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:8"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1628,"src":"860:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1625,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:8"},"scope":1629,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"141:279:8","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1629],"name":"IERC165","nameLocation":"431:7:8","scope":1630,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":8} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json b/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json deleted file mode 100644 index d355336..0000000 --- a/examples/on-chain_mnist/contracts/out/IERC721.sol/IERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","id":1263,"exportedSymbols":{"IERC165":[1629],"IERC721":[1262]},"nodeType":"SourceUnit","src":"108:4818:2","nodes":[{"id":1147,"nodeType":"PragmaDirective","src":"108:24:2","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1149,"nodeType":"ImportDirective","src":"134:62:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":1263,"sourceUnit":1630,"symbolAliases":[{"foreign":{"id":1148,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"142:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1262,"nodeType":"ContractDefinition","src":"266:4659:2","nodes":[{"id":1161,"nodeType":"EventDefinition","src":"394:82:2","nodes":[],"anonymous":false,"documentation":{"id":1153,"nodeType":"StructuredDocumentation","src":"301:88:2","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"400:8:2","parameters":{"id":1160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1155,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"425:4:2","nodeType":"VariableDeclaration","scope":1161,"src":"409:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1157,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"447:2:2","nodeType":"VariableDeclaration","scope":1161,"src":"431:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1156,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1159,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"467:7:2","nodeType":"VariableDeclaration","scope":1161,"src":"451:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"408:67:2"}},{"id":1170,"nodeType":"EventDefinition","src":"581:89:2","nodes":[],"anonymous":false,"documentation":{"id":1162,"nodeType":"StructuredDocumentation","src":"482:94:2","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"587:8:2","parameters":{"id":1169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1164,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"612:5:2","nodeType":"VariableDeclaration","scope":1170,"src":"596:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1163,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1166,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"635:8:2","nodeType":"VariableDeclaration","scope":1170,"src":"619:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1165,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1168,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"661:7:2","nodeType":"VariableDeclaration","scope":1170,"src":"645:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1167,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"595:74:2"}},{"id":1179,"nodeType":"EventDefinition","src":"798:85:2","nodes":[],"anonymous":false,"documentation":{"id":1171,"nodeType":"StructuredDocumentation","src":"676:117:2","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"804:14:2","parameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1173,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"835:5:2","nodeType":"VariableDeclaration","scope":1179,"src":"819:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1175,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"858:8:2","nodeType":"VariableDeclaration","scope":1179,"src":"842:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1174,"name":"address","nodeType":"ElementaryTypeName","src":"842:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1177,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"873:8:2","nodeType":"VariableDeclaration","scope":1179,"src":"868:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1176,"name":"bool","nodeType":"ElementaryTypeName","src":"868:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"818:64:2"}},{"id":1187,"nodeType":"FunctionDefinition","src":"970:74:2","nodes":[],"documentation":{"id":1180,"nodeType":"StructuredDocumentation","src":"889:76:2","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"979:9:2","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"owner","nameLocation":"997:5:2","nodeType":"VariableDeclaration","scope":1187,"src":"989:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1181,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"988:15:2"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"balance","nameLocation":"1035:7:2","nodeType":"VariableDeclaration","scope":1187,"src":"1027:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1027:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1026:17:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1195,"nodeType":"FunctionDefinition","src":"1186:72:2","nodes":[],"documentation":{"id":1188,"nodeType":"StructuredDocumentation","src":"1050:131:2","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1195:7:2","parameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"tokenId","nameLocation":"1211:7:2","nodeType":"VariableDeclaration","scope":1195,"src":"1203:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1202:17:2"},"returnParameters":{"id":1194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1193,"mutability":"mutable","name":"owner","nameLocation":"1251:5:2","nodeType":"VariableDeclaration","scope":1195,"src":"1243:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1192,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1242:15:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1207,"nodeType":"FunctionDefinition","src":"1834:99:2","nodes":[],"documentation":{"id":1196,"nodeType":"StructuredDocumentation","src":"1264:565:2","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1843:16:2","parameters":{"id":1205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"from","nameLocation":"1868:4:2","nodeType":"VariableDeclaration","scope":1207,"src":"1860:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1197,"name":"address","nodeType":"ElementaryTypeName","src":"1860:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"to","nameLocation":"1882:2:2","nodeType":"VariableDeclaration","scope":1207,"src":"1874:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1199,"name":"address","nodeType":"ElementaryTypeName","src":"1874:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1202,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:2","nodeType":"VariableDeclaration","scope":1207,"src":"1886:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1204,"mutability":"mutable","name":"data","nameLocation":"1918:4:2","nodeType":"VariableDeclaration","scope":1207,"src":"1903:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1203,"name":"bytes","nodeType":"ElementaryTypeName","src":"1903:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1859:64:2"},"returnParameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"1932:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1217,"nodeType":"FunctionDefinition","src":"2649:78:2","nodes":[],"documentation":{"id":1208,"nodeType":"StructuredDocumentation","src":"1939:705:2","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2658:16:2","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1210,"mutability":"mutable","name":"from","nameLocation":"2683:4:2","nodeType":"VariableDeclaration","scope":1217,"src":"2675:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1209,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1212,"mutability":"mutable","name":"to","nameLocation":"2697:2:2","nodeType":"VariableDeclaration","scope":1217,"src":"2689:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1211,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1214,"mutability":"mutable","name":"tokenId","nameLocation":"2709:7:2","nodeType":"VariableDeclaration","scope":1217,"src":"2701:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1213,"name":"uint256","nodeType":"ElementaryTypeName","src":"2701:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2674:43:2"},"returnParameters":{"id":1216,"nodeType":"ParameterList","parameters":[],"src":"2726:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1227,"nodeType":"FunctionDefinition","src":"3470:74:2","nodes":[],"documentation":{"id":1218,"nodeType":"StructuredDocumentation","src":"2733:732:2","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3479:12:2","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"from","nameLocation":"3500:4:2","nodeType":"VariableDeclaration","scope":1227,"src":"3492:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1219,"name":"address","nodeType":"ElementaryTypeName","src":"3492:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"to","nameLocation":"3514:2:2","nodeType":"VariableDeclaration","scope":1227,"src":"3506:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1221,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1224,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:2","nodeType":"VariableDeclaration","scope":1227,"src":"3518:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1223,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:43:2"},"returnParameters":{"id":1226,"nodeType":"ParameterList","parameters":[],"src":"3543:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1235,"nodeType":"FunctionDefinition","src":"4007:55:2","nodes":[],"documentation":{"id":1228,"nodeType":"StructuredDocumentation","src":"3550:452:2","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4016:7:2","parameters":{"id":1233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1230,"mutability":"mutable","name":"to","nameLocation":"4032:2:2","nodeType":"VariableDeclaration","scope":1235,"src":"4024:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1229,"name":"address","nodeType":"ElementaryTypeName","src":"4024:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1232,"mutability":"mutable","name":"tokenId","nameLocation":"4044:7:2","nodeType":"VariableDeclaration","scope":1235,"src":"4036:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1231,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4023:29:2"},"returnParameters":{"id":1234,"nodeType":"ParameterList","parameters":[],"src":"4061:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1243,"nodeType":"FunctionDefinition","src":"4388:69:2","nodes":[],"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"4068:315:2","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4397:17:2","parameters":{"id":1241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"operator","nameLocation":"4423:8:2","nodeType":"VariableDeclaration","scope":1243,"src":"4415:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1237,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1240,"mutability":"mutable","name":"approved","nameLocation":"4438:8:2","nodeType":"VariableDeclaration","scope":1243,"src":"4433:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1239,"name":"bool","nodeType":"ElementaryTypeName","src":"4433:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4414:33:2"},"returnParameters":{"id":1242,"nodeType":"ParameterList","parameters":[],"src":"4456:0:2"},"scope":1262,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1251,"nodeType":"FunctionDefinition","src":"4607:79:2","nodes":[],"documentation":{"id":1244,"nodeType":"StructuredDocumentation","src":"4463:139:2","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4616:11:2","parameters":{"id":1247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"tokenId","nameLocation":"4636:7:2","nodeType":"VariableDeclaration","scope":1251,"src":"4628:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"4628:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4627:17:2"},"returnParameters":{"id":1250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"operator","nameLocation":"4676:8:2","nodeType":"VariableDeclaration","scope":1251,"src":"4668:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"4668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4667:18:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1261,"nodeType":"FunctionDefinition","src":"4835:88:2","nodes":[],"documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"4692:138:2","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4844:16:2","parameters":{"id":1257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1254,"mutability":"mutable","name":"owner","nameLocation":"4869:5:2","nodeType":"VariableDeclaration","scope":1261,"src":"4861:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1253,"name":"address","nodeType":"ElementaryTypeName","src":"4861:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1256,"mutability":"mutable","name":"operator","nameLocation":"4884:8:2","nodeType":"VariableDeclaration","scope":1261,"src":"4876:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1255,"name":"address","nodeType":"ElementaryTypeName","src":"4876:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4860:33:2"},"returnParameters":{"id":1260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1261,"src":"4917:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1258,"name":"bool","nodeType":"ElementaryTypeName","src":"4917:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4916:6:2"},"scope":1262,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1151,"name":"IERC165","nameLocations":["287:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":1629,"src":"287:7:2"},"id":1152,"nodeType":"InheritanceSpecifier","src":"287:7:2"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1150,"nodeType":"StructuredDocumentation","src":"198:67:2","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1262,1629],"name":"IERC721","nameLocation":"276:7:2","scope":1263,"usedErrors":[],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":2} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json b/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json deleted file mode 100644 index e593845..0000000 --- a/examples/on-chain_mnist/contracts/out/IERC721Metadata.sol/IERC721Metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":1309,"exportedSymbols":{"IERC721":[1262],"IERC721Metadata":[1308]},"nodeType":"SourceUnit","src":"127:665:4","nodes":[{"id":1282,"nodeType":"PragmaDirective","src":"127:24:4","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1284,"nodeType":"ImportDirective","src":"153:39:4","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","nameLocation":"-1:-1:-1","scope":1309,"sourceUnit":1263,"symbolAliases":[{"foreign":{"id":1283,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"161:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1308,"nodeType":"ContractDefinition","src":"328:463:4","nodes":[{"id":1293,"nodeType":"FunctionDefinition","src":"434:54:4","nodes":[],"documentation":{"id":1288,"nodeType":"StructuredDocumentation","src":"371:58:4","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"443:4:4","parameters":{"id":1289,"nodeType":"ParameterList","parameters":[],"src":"447:2:4"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1293,"src":"473:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1290,"name":"string","nodeType":"ElementaryTypeName","src":"473:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"472:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1299,"nodeType":"FunctionDefinition","src":"559:56:4","nodes":[],"documentation":{"id":1294,"nodeType":"StructuredDocumentation","src":"494:60:4","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"568:6:4","parameters":{"id":1295,"nodeType":"ParameterList","parameters":[],"src":"574:2:4"},"returnParameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1299,"src":"600:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1296,"name":"string","nodeType":"ElementaryTypeName","src":"600:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"599:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1307,"nodeType":"FunctionDefinition","src":"716:73:4","nodes":[],"documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"621:90:4","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"725:8:4","parameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"tokenId","nameLocation":"742:7:4","nodeType":"VariableDeclaration","scope":1307,"src":"734:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:17:4"},"returnParameters":{"id":1306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1307,"src":"774:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1304,"name":"string","nodeType":"ElementaryTypeName","src":"774:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"773:15:4"},"scope":1308,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1286,"name":"IERC721","nameLocations":["357:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1262,"src":"357:7:4"},"id":1287,"nodeType":"InheritanceSpecifier","src":"357:7:4"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"194:133:4","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1308,1262,1629],"name":"IERC721Metadata","nameLocation":"338:15:4","scope":1309,"usedErrors":[],"usedEvents":[1161,1170,1179]}],"license":"MIT"},"id":4} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json b/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json deleted file mode 100644 index 35e24a5..0000000 --- a/examples/on-chain_mnist/contracts/out/IERC721Receiver.sol/IERC721Receiver.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":"IERC721Receiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","id":1281,"exportedSymbols":{"IERC721Receiver":[1280]},"nodeType":"SourceUnit","src":"116:879:3","nodes":[{"id":1264,"nodeType":"PragmaDirective","src":"116:24:3","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1280,"nodeType":"ContractDefinition","src":"295:699:3","nodes":[{"id":1279,"nodeType":"FunctionDefinition","src":"832:160:3","nodes":[],"documentation":{"id":1266,"nodeType":"StructuredDocumentation","src":"327:500:3","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"841:16:3","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1268,"mutability":"mutable","name":"operator","nameLocation":"875:8:3","nodeType":"VariableDeclaration","scope":1279,"src":"867:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1267,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1270,"mutability":"mutable","name":"from","nameLocation":"901:4:3","nodeType":"VariableDeclaration","scope":1279,"src":"893:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1269,"name":"address","nodeType":"ElementaryTypeName","src":"893:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1272,"mutability":"mutable","name":"tokenId","nameLocation":"923:7:3","nodeType":"VariableDeclaration","scope":1279,"src":"915:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"915:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"data","nameLocation":"955:4:3","nodeType":"VariableDeclaration","scope":1279,"src":"940:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1273,"name":"bytes","nodeType":"ElementaryTypeName","src":"940:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"857:108:3"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1279,"src":"984:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1276,"name":"bytes4","nodeType":"ElementaryTypeName","src":"984:6:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"983:8:3"},"scope":1280,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"142:152:3","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1280],"name":"IERC721Receiver","nameLocation":"305:15:3","scope":1281,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":3} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json b/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json deleted file mode 100644 index 072ccfa..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT.sol/MNISTNFT.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61123c80620001fd6000396000f3fe6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea2646970667358221220509fc980a219d59bc05de9640913a1e3758252fb2552bd0dea8711d66002e65d64736f6c63430008180033","sourceMap":"222:1058:11:-:0;;;323:44;;;;;;;;;;1381:113:1;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:1;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:1;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;222:1058:11;;14:127:13;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:13;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:13;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:13;;;2571:26;2522:89;-1:-1:-1;;1333:1:13;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:13;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:13;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:13;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:13:o;:::-;222:1058:11;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f55760003560e01c806342842e0e1161008f578063a0712d6811610061578063a0712d68146102c8578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806395d89b41146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd6565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd6565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd6565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506101786105a4565b3480156102d457600080fd5b506100fc6102e3366004610dd6565b6105b3565b3480156102f457600080fd5b506100fc610303366004610fbd565b6105fe565b34801561031457600080fd5b506100fc61032336600461100f565b610609565b34801561033457600080fd5b50610178610343366004610dd6565b610620565b34801561035457600080fd5b5061012e6103633660046110eb565b610695565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c99061111e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f59061111e565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c3565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106fc565b5050565b600061048f84610709565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610744565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610609565b505050565b60006103b4826106c3565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b6060600180546103c99061111e565b60008181526006602052604090205460ff16156105d8576105d581600a611158565b90505b6000818152600660205260409020805460ff191660011790556105fb338261083d565b50565b610480338383610857565b6106148484846104a1565b61052b848484846108f6565b606061062b826106c3565b50600061064360408051602081019091526000815290565b90506000815111610663576040518060200160405280600081525061068e565b8061066d84610a1f565b60405160200161067e92919061117d565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610ab2565b60006107186000836000610744565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561077157610771818486610bb8565b6001600160a01b038116156107af5761078e600085600080610ab2565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107de576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c1c565b6001600160a01b03821661088957604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109389033908890879087906004016111ac565b6020604051808303816000875af1925050508015610973575060408051601f3d908101601f19168201909252610970918101906111e9565b60015b6109dc573d8080156109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b5080516000036109d457604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1857604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2c83610c33565b600101905060008167ffffffffffffffff811115610a4c57610a4c610ff9565b6040519080825280601f01601f191660200182016040528015610a76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a8057509392505050565b8080610ac657506001600160a01b03821615155b15610b88576000610ad6846106c3565b90506001600160a01b03831615801590610b025750826001600160a01b0316816001600160a01b031614155b8015610b155750610b138184610695565b155b15610b3e5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b865783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc3838383610d0b565b61054c576001600160a01b038316610bf157604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c268383610d71565b61054c60008484846108f6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cbc57662386f26fc10000830492506010015b6305f5e1008310610cd4576305f5e100830492506008015b6127108310610ce857612710830492506004015b60648310610cfa576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d695750826001600160a01b0316846001600160a01b03161480610d455750610d458484610695565b80610d6957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9b57604051633250574960e11b8152600060048201526024016104c7565b6000610da983836000610744565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de857600080fd5b5035919050565b6001600160e01b0319811681146105fb57600080fd5b600060208284031215610e1757600080fd5b813561068e81610def565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068e6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068e82610e85565b60008060408385031215610fd057600080fd5b610fd983610e85565b915060208301358015158114610fee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102557600080fd5b61102e85610e85565b935061103c60208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561106057600080fd5b818701915087601f83011261107457600080fd5b81358181111561108657611086610ff9565b604051601f8201601f19908116603f011681019083821181831017156110ae576110ae610ff9565b816040528281528a60208487010111156110c757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110fe57600080fd5b61110783610e85565b915061111560208401610e85565b90509250929050565b600181811c9082168061113257607f821691505b60208210810361115257634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b6000835161118f818460208801610e22565b8351908301906111a3818360208801610e22565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111df90830184610e46565b9695505050505050565b6000602082840312156111fb57600080fd5b815161068e81610def56fea2646970667358221220509fc980a219d59bc05de9640913a1e3758252fb2552bd0dea8711d66002e65d64736f6c63430008180033","sourceMap":"222:1058:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:43;;;;;;;;;;-1:-1:-1;273:43:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:13;;357:22;339:41;;327:2;312:18;273:43:11;;;;;;;;1561:300:1;;;;;;;;;;-1:-1:-1;1561:300:1;;;;;:::i;:::-;;:::i;2365:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;;;;;-1:-1:-1;3497:154:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:13;;;1679:51;;1667:2;1652:18;3497:154:1;1533:203:13;3323:113:1;;;;;;;;;;-1:-1:-1;3323:113:1;;;;;:::i;:::-;;:::i;1181:97:11:-;;;;;;;;;;-1:-1:-1;1250:21:11;1181:97;;;2324:25:13;;;2312:2;2297:18;1181:97:11;2178:177:13;632:363:11;;;;;;;;;;-1:-1:-1;632:363:11;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3335:33:13;;;3317:52;;3305:2;3290:18;632:363:11;3173:202:13;4143:578:1;;;;;;;;;;-1:-1:-1;4143:578:1;;;;;:::i;:::-;;:::i;4787:132::-;;;;;;;;;;-1:-1:-1;4787:132:1;;;;;:::i;:::-;;:::i;2185:118::-;;;;;;;;;;-1:-1:-1;2185:118:1;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;;;;;-1:-1:-1;1920:208:1;;;;;:::i;:::-;;:::i;2518:93::-;;;;;;;;;;;;;:::i;373:206:11:-;;;;;;;;;;-1:-1:-1;373:206:11;;;;;:::i;:::-;;:::i;3718:144:1:-;;;;;;;;;;-1:-1:-1;3718:144:1;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;;;;;-1:-1:-1;4985:208:1;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;;;;;-1:-1:-1;2677:255:1;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;;;;;-1:-1:-1;3928:153:1;;;;;:::i;:::-;;:::i;1561:300::-;1663:4;-1:-1:-1;;;;;;1698:40:1;;-1:-1:-1;;;1698:40:1;;:104;;-1:-1:-1;;;;;;;1754:48:1;;-1:-1:-1;;;1754:48:1;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:7;;;1818:36:1;1679:175;1561:300;-1:-1:-1;;1561:300:1:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:1;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:5;3394:8:1;:35::i;:::-;3323:113;;:::o;632:363:11:-;793:6;834:14;840:7;834:5;:14::i;:::-;-1:-1:-1;;;;632:363:11;;;;;;;:::o;4143:578:1:-;-1:-1:-1;;;;;4237:16:1;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:1;;4306:1;4276:33;;;1679:51:13;1652:18;;4276:33:1;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:5;4562:7:1;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:1;:13;-1:-1:-1;;;;;4610:21:1;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:1;;-1:-1:-1;;;;;6439:15:13;;;4654:50:1;;;6421:34:13;6471:18;;;6464:34;;;6534:15;;6514:18;;;6507:43;6356:18;;4654:50:1;6181:375:13;4606:109:1;4223:498;4143:578;;;:::o;4787:132::-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;2185:118::-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:1;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:1;;2075:1;2048:30;;;1679:51:13;1652:18;;2048:30:1;1533:203:13;2002:87:1;-1:-1:-1;;;;;;2105:16:1;;;;;:9;:16;;;;;;;1920:208::o;2518:93::-;2565:13;2597:7;2590:14;;;;;:::i;373:206:11:-;425:20;;;;:11;:20;;;;;;;;421:73;;;471:12;:7;481:2;471:12;:::i;:::-;461:22;;421:73;504:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;504:27:11;527:4;504:27;;;542:30;552:10;516:7;542:9;:30::i;:::-;373:206;:::o;3718:144:1:-;3803:52;735:10:5;3836:8:1;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:1;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2850:75;2843:82;2677:255;-1:-1:-1;;;2677:255:1:o;3928:153::-;-1:-1:-1;;;;;4039:25:1;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:1;;;;;2324:25:13;;;2297:18;;16309:31:1;2178:177:13;14418:120:1;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;11462:227::-;11513:21;11537:40;11553:1;11557:7;11574:1;11537:7;:40::i;:::-;11513:64;-1:-1:-1;;;;;;11591:27:1;;11587:96;;11641:31;;-1:-1:-1;;;11641:31:1;;;;;2324:25:13;;;2297:18;;11641:31:1;2178:177:13;8838:795:1;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:1;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:1;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:1;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:1;;;9157:256;-1:-1:-1;;;;;9427:16:1;;;9423:107;;-1:-1:-1;;;;;9487:13:1;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:1;-1:-1:-1;;;;;9540:21:1;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:1:o;10633:100::-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;15591:312::-;-1:-1:-1;;;;;15698:22:1;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:1;;-1:-1:-1;;;;;1697:32:13;;15743:31:1;;;1679:51:13;1652:18;;15743:31:1;1533:203:13;15694:91:1;-1:-1:-1;;;;;15794:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:1;;;;;;;;;;15855:41;;339::13;;;15855::1;;312:18:13;15855:41:1;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:1;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:1;;-1:-1:-1;;;;;17072:36:1;;;;;:71;;735:10:5;;17123:4:1;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:1;;;;;;;;-1:-1:-1;;17072:71:1;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:1;;-1:-1:-1;;;;;1697:32:13;;17430:25:1;;;1679:51:13;1652:18;;17430:25:1;1533:203:13;17377:293:1;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:1;;-1:-1:-1;;;17190:51:1;17186:130;;17272:25;;-1:-1:-1;;;17272:25:1;;-1:-1:-1;;;;;1697:32:13;;17272:25:1;;;1679:51:13;1652:18;;17272:25:1;1533:203:13;17186:130:1;17144:186;16918:782;;;;:::o;637:698:6:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:6;-1:-1:-1;794:41:6;-1:-1:-1;955:28:6;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:6;-1:-1:-1;;;1175:2:6;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:6;1010:282;1256:21;-1:-1:-1;1312:6:6;637:698;-1:-1:-1;;;637:698:6:o;14720:662:1:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:1;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:1;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:1;:5;-1:-1:-1;;;;;15115:13:1;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:1;;-1:-1:-1;;;;;1697:32:13;;15189:27:1;;;1679:51:13;1652:18;;15189:27:1;1533:203:13;15089:142:1;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:1;15292:5;-1:-1:-1;;;;;15283:28:1;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:1;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:1;-1:-1:-1;;;;;15346:29:1;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:1;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:1;;;;;2324:25:13;;;2297:18;;7298:31:1;2178:177:13;7248:186:1;7375:44;;-1:-1:-1;;;7375:44:1;;-1:-1:-1;;;;;8404:32:13;;7375:44:1;;;8386:51:13;8453:18;;;8446:34;;;8359:18;;7375:44:1;8212:274:13;10954:182:1;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:9:-;12267:7;;-1:-1:-1;;;12342:17:9;;12338:103;;-1:-1:-1;;;12379:17:9;;;-1:-1:-1;12424:2:9;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:9;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:9;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:9;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:9;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:9;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:9:o;6376:272:1:-;6479:4;-1:-1:-1;;;;;6514:21:1;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:1;:5;-1:-1:-1;;;;;6552:16:1;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:1;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:1;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:1:o;9955:327::-;-1:-1:-1;;;;;10022:16:1;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:1;;10091:1;10061:33;;;1679:51:13;1652:18;;10061:33:1;1533:203:13;10018:87:1;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:1;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:1;;10262:1;10234:31;;;1679:51:13;1652:18;;10234:31:1;1533:203:13;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:13;;14:180;-1:-1:-1;14:180:13:o;391:131::-;-1:-1:-1;;;;;;465:32:13;;455:43;;445:71;;512:1;509;502:12;527:245;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:13;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:13;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:13:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:13;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:13:o;2360:808::-;2457:6;2465;2473;2481;2489;2542:3;2530:9;2521:7;2517:23;2513:33;2510:53;;;2559:1;2556;2549:12;2510:53;2582:29;2601:9;2582:29;:::i;:::-;2572:39;;2630:38;2664:2;2653:9;2649:18;2630:38;:::i;:::-;2620:48;;2715:2;2704:9;2700:18;2687:32;2677:42;;2770:2;2759:9;2755:18;2742:32;2793:18;2834:2;2826:6;2823:14;2820:34;;;2850:1;2847;2840:12;2820:34;2888:6;2877:9;2873:22;2863:32;;2933:7;2926:4;2922:2;2918:13;2914:27;2904:55;;2955:1;2952;2945:12;2904:55;2995:2;2982:16;3021:2;3013:6;3010:14;3007:34;;;3037:1;3034;3027:12;3007:34;3082:7;3077:2;3068:6;3064:2;3060:15;3056:24;3053:37;3050:57;;;3103:1;3100;3093:12;3050:57;2360:808;;;;-1:-1:-1;2360:808:13;;-1:-1:-1;3134:2:13;3126:11;;3156:6;2360:808;-1:-1:-1;;;2360:808:13:o;3380:328::-;3457:6;3465;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3565:29;3584:9;3565:29;:::i;:::-;3555:39;;3613:38;3647:2;3636:9;3632:18;3613:38;:::i;:::-;3603:48;;3698:2;3687:9;3683:18;3670:32;3660:42;;3380:328;;;;;:::o;3713:186::-;3772:6;3825:2;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3864:29;3883:9;3864:29;:::i;3904:347::-;3969:6;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4069:29;4088:9;4069:29;:::i;:::-;4059:39;;4148:2;4137:9;4133:18;4120:32;4195:5;4188:13;4181:21;4174:5;4171:32;4161:60;;4217:1;4214;4207:12;4161:60;4240:5;4230:15;;;3904:347;;;;;:::o;4256:127::-;4317:10;4312:3;4308:20;4305:1;4298:31;4348:4;4345:1;4338:15;4372:4;4369:1;4362:15;4388:1138;4483:6;4491;4499;4507;4560:3;4548:9;4539:7;4535:23;4531:33;4528:53;;;4577:1;4574;4567:12;4528:53;4600:29;4619:9;4600:29;:::i;:::-;4590:39;;4648:38;4682:2;4671:9;4667:18;4648:38;:::i;:::-;4638:48;;4733:2;4722:9;4718:18;4705:32;4695:42;;4788:2;4777:9;4773:18;4760:32;4811:18;4852:2;4844:6;4841:14;4838:34;;;4868:1;4865;4858:12;4838:34;4906:6;4895:9;4891:22;4881:32;;4951:7;4944:4;4940:2;4936:13;4932:27;4922:55;;4973:1;4970;4963:12;4922:55;5009:2;4996:16;5031:2;5027;5024:10;5021:36;;;5037:18;;:::i;:::-;5112:2;5106:9;5080:2;5166:13;;-1:-1:-1;;5162:22:13;;;5186:2;5158:31;5154:40;5142:53;;;5210:18;;;5230:22;;;5207:46;5204:72;;;5256:18;;:::i;:::-;5296:10;5292:2;5285:22;5331:2;5323:6;5316:18;5371:7;5366:2;5361;5357;5353:11;5349:20;5346:33;5343:53;;;5392:1;5389;5382:12;5343:53;5448:2;5443;5439;5435:11;5430:2;5422:6;5418:15;5405:46;5493:1;5488:2;5483;5475:6;5471:15;5467:24;5460:35;5514:6;5504:16;;;;;;;4388:1138;;;;;;;:::o;5531:260::-;5599:6;5607;5660:2;5648:9;5639:7;5635:23;5631:32;5628:52;;;5676:1;5673;5666:12;5628:52;5699:29;5718:9;5699:29;:::i;:::-;5689:39;;5747:38;5781:2;5770:9;5766:18;5747:38;:::i;:::-;5737:48;;5531:260;;;;;:::o;5796:380::-;5875:1;5871:12;;;;5918;;;5939:61;;5993:4;5985:6;5981:17;5971:27;;5939:61;6046:2;6038:6;6035:14;6015:18;6012:38;6009:161;;6092:10;6087:3;6083:20;6080:1;6073:31;6127:4;6124:1;6117:15;6155:4;6152:1;6145:15;6009:161;;5796:380;;;:::o;6561:265::-;6634:9;;;6665;;6682:15;;;6676:22;;6662:37;6652:168;;6742:10;6737:3;6733:20;6730:1;6723:31;6777:4;6774:1;6767:15;6805:4;6802:1;6795:15;6831:496;7010:3;7048:6;7042:13;7064:66;7123:6;7118:3;7111:4;7103:6;7099:17;7064:66;:::i;:::-;7193:13;;7152:16;;;;7215:70;7193:13;7152:16;7262:4;7250:17;;7215:70;:::i;:::-;7301:20;;6831:496;-1:-1:-1;;;;6831:496:13:o;7332:489::-;-1:-1:-1;;;;;7601:15:13;;;7583:34;;7653:15;;7648:2;7633:18;;7626:43;7700:2;7685:18;;7678:34;;;7748:3;7743:2;7728:18;;7721:31;;;7526:4;;7769:46;;7795:19;;7787:6;7769:46;:::i;:::-;7761:54;7332:489;-1:-1:-1;;;;;;7332:489:13:o;7826:249::-;7895:6;7948:2;7936:9;7927:7;7923:23;7919:32;7916:52;;;7964:1;7961;7954:12;7916:52;7996:9;7990:16;8015:30;8039:5;8015:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getBalance()":"12065fe0","isApprovedForAll(address,address)":"e985e9c5","mint(uint256)":"a0712d68","name()":"06fdde03","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/MNISTNFT.sol\":{\"keccak256\":\"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b\",\"dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/MNISTNFT.sol":{"keccak256":"0xa2189059f553e9d5a26332dcb3dcd4274d456cbcdea8ae14c5b2189b34fedfb5","urls":["bzz-raw://fc5f3c505a126ad2a1e06284e475bb65f7787ebd10ab288ac55929cdf2a7cd7b","dweb:/ipfs/QmUqXDDmqEqzRB7tS8bZbgHJPVaUZSsopWr6U84YQCTKKz"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MNISTNFT.sol","id":2882,"exportedSymbols":{"Context":[1338],"ERC165":[1617],"ERC721":[1145],"IERC165":[1629],"IERC721":[1262],"IERC721Errors":[89],"IERC721Metadata":[1308],"IERC721Receiver":[1280],"MNISTNFT":[2881],"Strings":[1593]},"nodeType":"SourceUnit","src":"39:1241:11","nodes":[{"id":2790,"nodeType":"PragmaDirective","src":"39:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2791,"nodeType":"ImportDirective","src":"64:73:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1146,"symbolAliases":[],"unitAlias":""},{"id":2792,"nodeType":"ImportDirective","src":"138:82:11","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"../lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":2882,"sourceUnit":1281,"symbolAliases":[],"unitAlias":""},{"id":2881,"nodeType":"ContractDefinition","src":"222:1058:11","nodes":[{"id":2800,"nodeType":"VariableDeclaration","src":"273:43:11","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"305:11:11","scope":2881,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2799,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2797,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"273:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2798,"name":"bool","nodeType":"ElementaryTypeName","src":"292:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2808,"nodeType":"FunctionDefinition","src":"323:44:11","nodes":[],"body":{"id":2807,"nodeType":"Block","src":"365:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"344:10:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"356:7:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2805,"kind":"baseConstructorSpecifier","modifierName":{"id":2802,"name":"ERC721","nameLocations":["337:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"337:6:11"},"nodeType":"ModifierInvocation","src":"337:27:11"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[],"src":"334:2:11"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"365:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2837,"nodeType":"FunctionDefinition","src":"373:206:11","nodes":[],"body":{"id":2836,"nodeType":"Block","src":"411:168:11","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2813,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"425:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2815,"indexExpression":{"id":2814,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"425:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2823,"nodeType":"IfStatement","src":"421:73:11","trueBody":{"id":2822,"nodeType":"Block","src":"447:47:11","statements":[{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2816,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"461:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2817,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"471:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"481:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"471:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"461:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"461:22:11"}]}},{"expression":{"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2824,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"504:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2826,"indexExpression":{"id":2825,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"516:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"504:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"527:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"504:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2829,"nodeType":"ExpressionStatement","src":"504:27:11"},{"expression":{"arguments":[{"expression":{"id":2831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"552:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"556:6:11","memberName":"sender","nodeType":"MemberAccess","src":"552:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2833,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"564:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2830,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[767,793],"referencedDeclaration":767,"src":"542:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"542:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"542:30:11"}]},"functionSelector":"a0712d68","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"382:4:11","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"tokenId","nameLocation":"395:7:11","nodeType":"VariableDeclaration","scope":2837,"src":"387:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:17:11"},"returnParameters":{"id":2812,"nodeType":"ParameterList","parameters":[],"src":"411:0:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2860,"nodeType":"FunctionDefinition","src":"632:363:11","nodes":[],"body":{"id":2859,"nodeType":"Block","src":"801:194:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2852,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"840:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2851,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"834:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"834:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2854,"nodeType":"ExpressionStatement","src":"834:14:11"},{"expression":{"expression":{"expression":{"id":2855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"958:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"963:16:11","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2860,"src":"958:21:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"980:8:11","memberName":"selector","nodeType":"MemberAccess","src":"958:30:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2850,"id":2858,"nodeType":"Return","src":"951:37:11"}]},"baseFunctions":[1279],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"641:16:11","overrides":{"id":2847,"nodeType":"OverrideSpecifier","overrides":[],"src":"775:8:11"},"parameters":{"id":2846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2839,"mutability":"mutable","name":"operator","nameLocation":"675:8:11","nodeType":"VariableDeclaration","scope":2860,"src":"667:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2838,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2841,"mutability":"mutable","name":"from","nameLocation":"701:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"693:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2840,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2843,"mutability":"mutable","name":"tokenId","nameLocation":"723:7:11","nodeType":"VariableDeclaration","scope":2860,"src":"715:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2845,"mutability":"mutable","name":"data","nameLocation":"755:4:11","nodeType":"VariableDeclaration","scope":2860,"src":"740:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2844,"name":"bytes","nodeType":"ElementaryTypeName","src":"740:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"657:108:11"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2860,"src":"793:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2848,"name":"bytes4","nodeType":"ElementaryTypeName","src":"793:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"792:8:11"},"scope":2881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2864,"nodeType":"FunctionDefinition","src":"1026:30:11","nodes":[],"body":{"id":2863,"nodeType":"Block","src":"1054:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2861,"nodeType":"ParameterList","parameters":[],"src":"1034:2:11"},"returnParameters":{"id":2862,"nodeType":"ParameterList","parameters":[],"src":"1054:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2868,"nodeType":"FunctionDefinition","src":"1095:29:11","nodes":[],"body":{"id":2867,"nodeType":"Block","src":"1122:2:11","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"1102:2:11"},"returnParameters":{"id":2866,"nodeType":"ParameterList","parameters":[],"src":"1122:0:11"},"scope":2881,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2880,"nodeType":"FunctionDefinition","src":"1181:97:11","nodes":[],"body":{"id":2879,"nodeType":"Block","src":"1233:45:11","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1258:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2881","typeString":"contract MNISTNFT"}],"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1250:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2873,"name":"address","nodeType":"ElementaryTypeName","src":"1250:7:11","typeDescriptions":{}}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1264:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1250:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2872,"id":2878,"nodeType":"Return","src":"1243:28:11"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"1190:10:11","parameters":{"id":2869,"nodeType":"ParameterList","parameters":[],"src":"1200:2:11"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"1224:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1223:9:11"},"scope":2881,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2793,"name":"ERC721","nameLocations":["243:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":1145,"src":"243:6:11"},"id":2794,"nodeType":"InheritanceSpecifier","src":"243:6:11"},{"baseName":{"id":2795,"name":"IERC721Receiver","nameLocations":["251:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":1280,"src":"251:15:11"},"id":2796,"nodeType":"InheritanceSpecifier","src":"251:15:11"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2881,1280,1145,89,1308,1262,1617,1629,1338],"name":"MNISTNFT","nameLocation":"231:8:11","scope":2882,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1161,1170,1179]}],"license":"UNLICENSED"},"id":11} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json deleted file mode 100644 index fafc9af..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Context.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json deleted file mode 100644 index 0ed55cf..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json deleted file mode 100644 index 187963d..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/ERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"ERC721"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json deleted file mode 100644 index 1f45b73..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC1155Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC1155Errors"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json deleted file mode 100644 index 891983d..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json deleted file mode 100644 index f44c46b..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC20Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC20Errors"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json deleted file mode 100644 index 18ec723..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json deleted file mode 100644 index 43ed05e..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721Errors"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json deleted file mode 100644 index 46f94cc..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json deleted file mode 100644 index 1757c87..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/IERC721Receiver.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"IERC721Receiver"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json deleted file mode 100644 index 4d0fed2..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/MNISTNFT.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"sendTo","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenExists","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040518060400160405280600881526020016713539254d513919560c21b8152506040518060400160405280600581526020016413539254d560da1b815250816000908162000062919062000121565b50600162000071828262000121565b505050620001ed565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a557607f821691505b602082108103620000c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011c576000816000526020600020601f850160051c81016020861015620000f75750805b601f850160051c820191505b81811015620001185782815560010162000103565b5050505b505050565b81516001600160401b038111156200013d576200013d6200007a565b62000155816200014e845462000090565b84620000cc565b602080601f8311600181146200018d5760008415620001745750858301515b600019600386901b1c1916600185901b17855562000118565b600085815260208120601f198616915b82811015620001be578886015182559484019460019091019084016200019d565b5085821015620001dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61125f80620001fd6000396000f3fe6080604052600436106100f55760003560e01c806342842e0e1161008f57806395d89b411161006157806395d89b41146102d3578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806394bf804d146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd3565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd3565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd3565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506100fc6102ce366004610fbd565b6105a4565b3480156102df57600080fd5b506101786105ec565b3480156102f457600080fd5b506100fc610303366004610fe9565b6105fb565b34801561031457600080fd5b506100fc61032336600461103b565b610606565b34801561033457600080fd5b50610178610343366004610dd3565b61061d565b34801561035457600080fd5b5061012e610363366004611117565b610692565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c990611141565b80601f01602080910402602001604051908101604052809291908181526020018280546103f590611141565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c0565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106f9565b5050565b600061048f84610706565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610741565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610606565b505050565b60006103b4826106c0565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b60008281526006602052604090205460ff16156105c9576105c682600a61117b565b91505b6000828152600660205260409020805460ff19166001179055610480818361083a565b6060600180546103c990611141565b610480338383610854565b6106118484846104a1565b61052b848484846108f3565b6060610628826106c0565b50600061064060408051602081019091526000815290565b90506000815111610660576040518060200160405280600081525061068b565b8061066a84610a1c565b60405160200161067b9291906111a0565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610aaf565b60006107156000836000610741565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561076e5761076e818486610bb5565b6001600160a01b038116156107ac5761078b600085600080610aaf565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107db576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c19565b6001600160a01b03821661088657604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109359033908890879087906004016111cf565b6020604051808303816000875af1925050508015610970575060408051601f3d908101601f1916820190925261096d9181019061120c565b60015b6109d9573d80801561099e576040519150601f19603f3d011682016040523d82523d6000602084013e6109a3565b606091505b5080516000036109d157604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1557604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2983610c30565b600101905060008167ffffffffffffffff811115610a4957610a49611025565b6040519080825280601f01601f191660200182016040528015610a73576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a7d57509392505050565b8080610ac357506001600160a01b03821615155b15610b85576000610ad3846106c0565b90506001600160a01b03831615801590610aff5750826001600160a01b0316816001600160a01b031614155b8015610b125750610b108184610692565b155b15610b3b5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b835783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc0838383610d08565b61054c576001600160a01b038316610bee57604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c238383610d6e565b61054c60008484846108f3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c6f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cb957662386f26fc10000830492506010015b6305f5e1008310610cd1576305f5e100830492506008015b6127108310610ce557612710830492506004015b60648310610cf7576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d665750826001600160a01b0316846001600160a01b03161480610d425750610d428484610692565b80610d6657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9857604051633250574960e11b8152600060048201526024016104c7565b6000610da683836000610741565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de557600080fd5b5035919050565b6001600160e01b031981168114610e0257600080fd5b50565b600060208284031215610e1757600080fd5b813561068b81610dec565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068b6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068b82610e85565b60008060408385031215610fd057600080fd5b82359150610fe060208401610e85565b90509250929050565b60008060408385031215610ffc57600080fd5b61100583610e85565b91506020830135801515811461101a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561105157600080fd5b61105a85610e85565b935061106860208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561108c57600080fd5b818701915087601f8301126110a057600080fd5b8135818111156110b2576110b2611025565b604051601f8201601f19908116603f011681019083821181831017156110da576110da611025565b816040528281528a60208487010111156110f357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561112a57600080fd5b61113383610e85565b9150610fe060208401610e85565b600181811c9082168061115557607f821691505b60208210810361117557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b600083516111b2818460208801610e22565b8351908301906111c6818360208801610e22565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061120290830184610e46565b9695505050505050565b60006020828403121561121e57600080fd5b815161068b81610dec56fea2646970667358221220acd60fa32deecc24ab34e4a514e9931499528421959d8a4040b87bccb36f799d64736f6c63430008180033","sourceMap":"52951:1070:0:-:0;;;53052:44;;;;;;;;;;36577:113;;;;;;;;;;;;;-1:-1:-1;;;36577:113:0;;;;;;;;;;;;;;;;-1:-1:-1;;;36577:113:0;;;36651:5;36643;:13;;;;;;:::i;:::-;-1:-1:-1;36666:7:0;:17;36676:7;36666;:17;:::i;:::-;;36577:113;;52951:1070;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:1;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:1;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:1;;;2571:26;2522:89;-1:-1:-1;;1333:1:1;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:1;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:1;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:1;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:1:o;:::-;52951:1070:0;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100f55760003560e01c806342842e0e1161008f57806395d89b411161006157806395d89b41146102d3578063a22cb465146102e8578063b88d4fde14610308578063c87b56dd14610328578063e985e9c51461034857005b806342842e0e146102535780636352211e1461027357806370a082311461029357806394bf804d146102b357005b8063095ea7b3116100c8578063095ea7b3146101bd57806312065fe0146101dd578063150b7a02146101fa57806323b872dd1461023357005b8062923f9e146100fe57806301ffc9a71461014357806306fdde0314610163578063081812fc1461018557005b366100fc57005b005b34801561010a57600080fd5b5061012e610119366004610dd3565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061012e61015e366004610e05565b610368565b34801561016f57600080fd5b506101786103ba565b60405161013a9190610e72565b34801561019157600080fd5b506101a56101a0366004610dd3565b61044c565b6040516001600160a01b03909116815260200161013a565b3480156101c957600080fd5b506100fc6101d8366004610ea1565b610475565b3480156101e957600080fd5b50475b60405190815260200161013a565b34801561020657600080fd5b5061021a610215366004610ecb565b610484565b6040516001600160e01b0319909116815260200161013a565b34801561023f57600080fd5b506100fc61024e366004610f66565b6104a1565b34801561025f57600080fd5b506100fc61026e366004610f66565b610531565b34801561027f57600080fd5b506101a561028e366004610dd3565b610551565b34801561029f57600080fd5b506101ec6102ae366004610fa2565b61055c565b3480156102bf57600080fd5b506100fc6102ce366004610fbd565b6105a4565b3480156102df57600080fd5b506101786105ec565b3480156102f457600080fd5b506100fc610303366004610fe9565b6105fb565b34801561031457600080fd5b506100fc61032336600461103b565b610606565b34801561033457600080fd5b50610178610343366004610dd3565b61061d565b34801561035457600080fd5b5061012e610363366004611117565b610692565b60006001600160e01b031982166380ac58cd60e01b148061039957506001600160e01b03198216635b5e139f60e01b145b806103b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103c990611141565b80601f01602080910402602001604051908101604052809291908181526020018280546103f590611141565b80156104425780601f1061041757610100808354040283529160200191610442565b820191906000526020600020905b81548152906001019060200180831161042557829003601f168201915b5050505050905090565b6000610457826106c0565b506000828152600460205260409020546001600160a01b03166103b4565b6104808282336106f9565b5050565b600061048f84610706565b50630a85bd0160e11b95945050505050565b6001600160a01b0382166104d057604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104dd838333610741565b9050836001600160a01b0316816001600160a01b03161461052b576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016104c7565b50505050565b61054c83838360405180602001604052806000815250610606565b505050565b60006103b4826106c0565b60006001600160a01b038216610588576040516322718ad960e21b8152600060048201526024016104c7565b506001600160a01b031660009081526003602052604090205490565b60008281526006602052604090205460ff16156105c9576105c682600a61117b565b91505b6000828152600660205260409020805460ff19166001179055610480818361083a565b6060600180546103c990611141565b610480338383610854565b6106118484846104a1565b61052b848484846108f3565b6060610628826106c0565b50600061064060408051602081019091526000815290565b90506000815111610660576040518060200160405280600081525061068b565b8061066a84610a1c565b60405160200161067b9291906111a0565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b0316806103b457604051637e27328960e01b8152600481018490526024016104c7565b61054c8383836001610aaf565b60006107156000836000610741565b90506001600160a01b03811661048057604051637e27328960e01b8152600481018390526024016104c7565b6000828152600260205260408120546001600160a01b039081169083161561076e5761076e818486610bb5565b6001600160a01b038116156107ac5761078b600085600080610aaf565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156107db576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610480828260405180602001604052806000815250610c19565b6001600160a01b03821661088657604051630b61174360e31b81526001600160a01b03831660048201526024016104c7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561052b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109359033908890879087906004016111cf565b6020604051808303816000875af1925050508015610970575060408051601f3d908101601f1916820190925261096d9181019061120c565b60015b6109d9573d80801561099e576040519150601f19603f3d011682016040523d82523d6000602084013e6109a3565b606091505b5080516000036109d157604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a1557604051633250574960e11b81526001600160a01b03851660048201526024016104c7565b5050505050565b60606000610a2983610c30565b600101905060008167ffffffffffffffff811115610a4957610a49611025565b6040519080825280601f01601f191660200182016040528015610a73576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a7d57509392505050565b8080610ac357506001600160a01b03821615155b15610b85576000610ad3846106c0565b90506001600160a01b03831615801590610aff5750826001600160a01b0316816001600160a01b031614155b8015610b125750610b108184610692565b155b15610b3b5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016104c7565b8115610b835783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bc0838383610d08565b61054c576001600160a01b038316610bee57604051637e27328960e01b8152600481018290526024016104c7565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016104c7565b610c238383610d6e565b61054c60008484846108f3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c6f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c9b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cb957662386f26fc10000830492506010015b6305f5e1008310610cd1576305f5e100830492506008015b6127108310610ce557612710830492506004015b60648310610cf7576064830492506002015b600a83106103b45760010192915050565b60006001600160a01b03831615801590610d665750826001600160a01b0316846001600160a01b03161480610d425750610d428484610692565b80610d6657506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610d9857604051633250574960e11b8152600060048201526024016104c7565b6000610da683836000610741565b90506001600160a01b0381161561054c576040516339e3563760e11b8152600060048201526024016104c7565b600060208284031215610de557600080fd5b5035919050565b6001600160e01b031981168114610e0257600080fd5b50565b600060208284031215610e1757600080fd5b813561068b81610dec565b60005b83811015610e3d578181015183820152602001610e25565b50506000910152565b60008151808452610e5e816020860160208601610e22565b601f01601f19169290920160200192915050565b60208152600061068b6020830184610e46565b80356001600160a01b0381168114610e9c57600080fd5b919050565b60008060408385031215610eb457600080fd5b610ebd83610e85565b946020939093013593505050565b600080600080600060808688031215610ee357600080fd5b610eec86610e85565b9450610efa60208701610e85565b935060408601359250606086013567ffffffffffffffff80821115610f1e57600080fd5b818801915088601f830112610f3257600080fd5b813581811115610f4157600080fd5b896020828501011115610f5357600080fd5b9699959850939650602001949392505050565b600080600060608486031215610f7b57600080fd5b610f8484610e85565b9250610f9260208501610e85565b9150604084013590509250925092565b600060208284031215610fb457600080fd5b61068b82610e85565b60008060408385031215610fd057600080fd5b82359150610fe060208401610e85565b90509250929050565b60008060408385031215610ffc57600080fd5b61100583610e85565b91506020830135801515811461101a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561105157600080fd5b61105a85610e85565b935061106860208601610e85565b925060408501359150606085013567ffffffffffffffff8082111561108c57600080fd5b818701915087601f8301126110a057600080fd5b8135818111156110b2576110b2611025565b604051601f8201601f19908116603f011681019083821181831017156110da576110da611025565b816040528281528a60208487010111156110f357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561112a57600080fd5b61113383610e85565b9150610fe060208401610e85565b600181811c9082168061115557607f821691505b60208210810361117557634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176103b457634e487b7160e01b600052601160045260246000fd5b600083516111b2818460208801610e22565b8351908301906111c6818360208801610e22565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061120290830184610e46565b9695505050505050565b60006020828403121561121e57600080fd5b815161068b81610dec56fea2646970667358221220acd60fa32deecc24ab34e4a514e9931499528421959d8a4040b87bccb36f799d64736f6c63430008180033","sourceMap":"52951:1070:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53002:43;;;;;;;;;;-1:-1:-1;53002:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:1;;357:22;339:41;;327:2;312:18;53002:43:0;;;;;;;;36757:300;;;;;;;;;;-1:-1:-1;36757:300:0;;;;;:::i;:::-;;:::i;37561:89::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;38693:154::-;;;;;;;;;;-1:-1:-1;38693:154:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:1;;;1679:51;;1667:2;1652:18;38693:154:0;1533:203:1;38519:113:0;;;;;;;;;;-1:-1:-1;38519:113:0;;;;;:::i;:::-;;:::i;53922:97::-;;;;;;;;;;-1:-1:-1;53991:21:0;53922:97;;;2324:25:1;;;2312:2;2297:18;53922:97:0;2178:177:1;53373:363:0;;;;;;;;;;-1:-1:-1;53373:363:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3335:33:1;;;3317:52;;3305:2;3290:18;53373:363:0;3173:202:1;39339:578:0;;;;;;;;;;-1:-1:-1;39339:578:0;;;;;:::i;:::-;;:::i;39983:132::-;;;;;;;;;;-1:-1:-1;39983:132:0;;;;;:::i;:::-;;:::i;37381:118::-;;;;;;;;;;-1:-1:-1;37381:118:0;;;;;:::i;:::-;;:::i;37116:208::-;;;;;;;;;;-1:-1:-1;37116:208:0;;;;;:::i;:::-;;:::i;53102:218::-;;;;;;;;;;-1:-1:-1;53102:218:0;;;;;:::i;:::-;;:::i;37714:93::-;;;;;;;;;;;;;:::i;38914:144::-;;;;;;;;;;-1:-1:-1;38914:144:0;;;;;:::i;:::-;;:::i;40181:208::-;;;;;;;;;;-1:-1:-1;40181:208:0;;;;;:::i;:::-;;:::i;37873:255::-;;;;;;;;;;-1:-1:-1;37873:255:0;;;;;:::i;:::-;;:::i;39124:153::-;;;;;;;;;;-1:-1:-1;39124:153:0;;;;;:::i;:::-;;:::i;36757:300::-;36859:4;-1:-1:-1;;;;;;36894:40:0;;-1:-1:-1;;;36894:40:0;;:104;;-1:-1:-1;;;;;;;36950:48:0;;-1:-1:-1;;;36950:48:0;36894:104;:156;;;-1:-1:-1;;;;;;;;;;29815:40:0;;;37014:36;36875:175;36757:300;-1:-1:-1;;36757:300:0:o;37561:89::-;37606:13;37638:5;37631:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37561:89;:::o;38693:154::-;38760:7;38779:22;38793:7;38779:13;:22::i;:::-;-1:-1:-1;41204:7:0;41230:24;;;:15;:24;;;;;;-1:-1:-1;;;;;41230:24:0;38819:21;41134:127;38519:113;38590:35;38599:2;38603:7;26793:10;38590:8;:35::i;:::-;38519:113;;:::o;53373:363::-;53534:6;53575:14;53581:7;53575:5;:14::i;:::-;-1:-1:-1;;;;53373:363:0;;;;;;;:::o;39339:578::-;-1:-1:-1;;;;;39433:16:0;;39429:87;;39472:33;;-1:-1:-1;;;39472:33:0;;39502:1;39472:33;;;1679:51:1;1652:18;;39472:33:0;;;;;;;;39429:87;39734:21;39758:34;39766:2;39770:7;26793:10;39758:7;:34::i;:::-;39734:58;;39823:4;-1:-1:-1;;;;;39806:21:0;:13;-1:-1:-1;;;;;39806:21:0;;39802:109;;39850:50;;-1:-1:-1;;;39850:50:0;;-1:-1:-1;;;;;6698:15:1;;;39850:50:0;;;6680:34:1;6730:18;;;6723:34;;;6793:15;;6773:18;;;6766:43;6615:18;;39850:50:0;6440:375:1;39802:109:0;39419:498;39339:578;;;:::o;39983:132::-;40069:39;40086:4;40092:2;40096:7;40069:39;;;;;;;;;;;;:16;:39::i;:::-;39983:132;;;:::o;37381:118::-;37444:7;37470:22;37484:7;37470:13;:22::i;37116:208::-;37179:7;-1:-1:-1;;;;;37202:19:0;;37198:87;;37244:30;;-1:-1:-1;;;37244:30:0;;37271:1;37244:30;;;1679:51:1;1652:18;;37244:30:0;1533:203:1;37198:87:0;-1:-1:-1;;;;;;37301:16:0;;;;;:9;:16;;;;;;;37116:208::o;53102:218::-;53170:20;;;;:11;:20;;;;;;;;53166:73;;;53216:12;:7;53226:2;53216:12;:::i;:::-;53206:22;;53166:73;53249:20;;;;:11;:20;;;;;:27;;-1:-1:-1;;53249:27:0;53272:4;53249:27;;;53287:26;53297:6;53261:7;53287:9;:26::i;37714:93::-;37761:13;37793:7;37786:14;;;;;:::i;38914:144::-;38999:52;26793:10;39032:8;39042;38999:18;:52::i;40181:208::-;40294:31;40307:4;40313:2;40317:7;40294:12;:31::i;:::-;40335:47;40358:4;40364:2;40368:7;40377:4;40335:22;:47::i;37873:255::-;37937:13;37962:22;37976:7;37962:13;:22::i;:::-;;37995:21;38019:10;38446:9;;;;;;;;;-1:-1:-1;38446:9:0;;;38370:92;38019:10;37995:34;;38070:1;38052:7;38046:21;:25;:75;;;;;;;;;;;;;;;;;38088:7;38097:18;:7;:16;:18::i;:::-;38074:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;38046:75;38039:82;37873:255;-1:-1:-1;;;37873:255:0:o;39124:153::-;-1:-1:-1;;;;;39235:25:0;;;39212:4;39235:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;39124:153::o;51334:241::-;51397:7;40995:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40995:16:0;;51459:88;;51505:31;;-1:-1:-1;;;51505:31:0;;;;;2324:25:1;;;2297:18;;51505:31:0;2178:177:1;49614:120:0;49694:33;49703:2;49707:7;49716:4;49722;49694:8;:33::i;46658:227::-;46709:21;46733:40;46749:1;46753:7;46770:1;46733:7;:40::i;:::-;46709:64;-1:-1:-1;;;;;;46787:27:0;;46783:96;;46837:31;;-1:-1:-1;;;46837:31:0;;;;;2324:25:1;;;2297:18;;46837:31:0;2178:177:1;44034:795:0;44120:7;40995:16;;;:7;:16;;;;;;-1:-1:-1;;;;;40995:16:0;;;;44231:18;;;44227:86;;44265:37;44282:4;44288;44294:7;44265:16;:37::i;:::-;-1:-1:-1;;;;;44357:18:0;;;44353:256;;44473:48;44490:1;44494:7;44511:1;44515:5;44473:8;:48::i;:::-;-1:-1:-1;;;;;44564:15:0;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;44564:20:0;;;44353:256;-1:-1:-1;;;;;44623:16:0;;;44619:107;;-1:-1:-1;;;;;44683:13:0;;;;;;:9;:13;;;;;:18;;44700:1;44683:18;;;44619:107;44736:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;44736:21:0;-1:-1:-1;;;;;44736:21:0;;;;;;;;;44773:27;;44736:16;;44773:27;;;;;;;44818:4;44034:795;-1:-1:-1;;;;44034:795:0:o;45829:100::-;45896:26;45906:2;45910:7;45896:26;;;;;;;;;;;;:9;:26::i;50787:312::-;-1:-1:-1;;;;;50894:22:0;;50890:91;;50939:31;;-1:-1:-1;;;50939:31:0;;-1:-1:-1;;;;;1697:32:1;;50939:31:0;;;1679:51:1;1652:18;;50939:31:0;1533:203:1;50890:91:0;-1:-1:-1;;;;;50990:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;50990:46:0;;;;;;;;;;51051:41;;339::1;;;51051::0;;312:18:1;51051:41:0;;;;;;;50787:312;;;:::o;52114:782::-;-1:-1:-1;;;;;52230:14:0;;;:18;52226:664;;52268:71;;-1:-1:-1;;;52268:71:0;;-1:-1:-1;;;;;52268:36:0;;;;;:71;;26793:10;;52319:4;;52325:7;;52334:4;;52268:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52268:71:0;;;;;;;;-1:-1:-1;;52268:71:0;;;;;;;;;;;;:::i;:::-;;;52264:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52577:6;:13;52594:1;52577:18;52573:293;;52626:25;;-1:-1:-1;;;52626:25:0;;-1:-1:-1;;;;;1697:32:1;;52626:25:0;;;1679:51:1;1652:18;;52626:25:0;1533:203:1;52573:293:0;52818:6;52812:13;52803:6;52799:2;52795:15;52788:38;52264:616;-1:-1:-1;;;;;;52386:51:0;;-1:-1:-1;;;52386:51:0;52382:130;;52468:25;;-1:-1:-1;;;52468:25:0;;-1:-1:-1;;;;;1697:32:1;;52468:25:0;;;1679:51:1;1652:18;;52468:25:0;1533:203:1;52382:130:0;52340:186;52114:782;;;;:::o;23574:698::-;23630:13;23679:14;23696:17;23707:5;23696:10;:17::i;:::-;23716:1;23696:21;23679:38;;23731:20;23765:6;23754:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23754:18:0;-1:-1:-1;23731:41:0;-1:-1:-1;23892:28:0;;;23908:2;23892:28;23947:282;-1:-1:-1;;23978:5:0;-1:-1:-1;;;24112:2:0;24101:14;;24096:32;23978:5;24083:46;24173:2;24164:11;;;-1:-1:-1;24193:21:0;23947:282;24193:21;-1:-1:-1;24249:6:0;23574:698;-1:-1:-1;;;23574:698:0:o;49916:662::-;50076:9;:31;;;-1:-1:-1;;;;;;50089:18:0;;;;50076:31;50072:460;;;50123:13;50139:22;50153:7;50139:13;:22::i;:::-;50123:38;-1:-1:-1;;;;;;50289:18:0;;;;;;:35;;;50320:4;-1:-1:-1;;;;;50311:13:0;:5;-1:-1:-1;;;;;50311:13:0;;;50289:35;:69;;;;;50329:29;50346:5;50353:4;50329:16;:29::i;:::-;50328:30;50289:69;50285:142;;;50385:27;;-1:-1:-1;;;50385:27:0;;-1:-1:-1;;;;;1697:32:1;;50385:27:0;;;1679:51:1;1652:18;;50385:27:0;1533:203:1;50285:142:0;50445:9;50441:81;;;50499:7;50495:2;-1:-1:-1;;;;;50479:28:0;50488:5;-1:-1:-1;;;;;50479:28:0;;;;;;;;;;;50441:81;50109:423;50072:460;-1:-1:-1;;50542:24:0;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;50542:29:0;-1:-1:-1;;;;;50542:29:0;;;;;;;;;;49916:662::o;42278:368::-;42390:38;42404:5;42411:7;42420;42390:13;:38::i;:::-;42385:255;;-1:-1:-1;;;;;42448:19:0;;42444:186;;42494:31;;-1:-1:-1;;;42494:31:0;;;;;2324:25:1;;;2297:18;;42494:31:0;2178:177:1;42444:186:0;42571:44;;-1:-1:-1;;;42571:44:0;;-1:-1:-1;;;;;8663:32:1;;42571:44:0;;;8645:51:1;8712:18;;;8705:34;;;8618:18;;42571:44:0;8471:274:1;46150:182:0;46244:18;46250:2;46254:7;46244:5;:18::i;:::-;46272:53;46303:1;46307:2;46311:7;46320:4;46272:22;:53::i;20098:916::-;20151:7;;-1:-1:-1;;;20226:17:0;;20222:103;;-1:-1:-1;;;20263:17:0;;;-1:-1:-1;20308:2:0;20298:12;20222:103;20351:8;20342:5;:17;20338:103;;20388:8;20379:17;;;-1:-1:-1;20424:2:0;20414:12;20338:103;20467:8;20458:5;:17;20454:103;;20504:8;20495:17;;;-1:-1:-1;20540:2:0;20530:12;20454:103;20583:7;20574:5;:16;20570:100;;20619:7;20610:16;;;-1:-1:-1;20654:1:0;20644:11;20570:100;20696:7;20687:5;:16;20683:100;;20732:7;20723:16;;;-1:-1:-1;20767:1:0;20757:11;20683:100;20809:7;20800:5;:16;20796:100;;20845:7;20836:16;;;-1:-1:-1;20880:1:0;20870:11;20796:100;20922:7;20913:5;:16;20909:66;;20959:1;20949:11;21001:6;20098:916;-1:-1:-1;;20098:916:0:o;41572:272::-;41675:4;-1:-1:-1;;;;;41710:21:0;;;;;;:127;;;41757:7;-1:-1:-1;;;;;41748:16:0;:5;-1:-1:-1;;;;;41748:16:0;;:52;;;;41768:32;41785:5;41792:7;41768:16;:32::i;:::-;41748:88;;;-1:-1:-1;41204:7:0;41230:24;;;:15;:24;;;;;;-1:-1:-1;;;;;41804:32:0;;;41230:24;;41804:32;41748:88;41691:146;41572:272;-1:-1:-1;;;;41572:272:0:o;45151:327::-;-1:-1:-1;;;;;45218:16:0;;45214:87;;45257:33;;-1:-1:-1;;;45257:33:0;;45287:1;45257:33;;;1679:51:1;1652:18;;45257:33:0;1533:203:1;45214:87:0;45310:21;45334:32;45342:2;45346:7;45363:1;45334:7;:32::i;:::-;45310:56;-1:-1:-1;;;;;;45380:27:0;;;45376:96;;45430:31;;-1:-1:-1;;;45430:31:0;;45458:1;45430:31;;;1679:51:1;1652:18;;45430:31:0;1533:203:1;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;391:131::-;-1:-1:-1;;;;;;465:32:1;;455:43;;445:71;;512:1;509;502:12;445:71;391:131;:::o;527:245::-;585:6;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;693:9;680:23;712:30;736:5;712:30;:::i;777:250::-;862:1;872:113;886:6;883:1;880:13;872:113;;;962:11;;;956:18;943:11;;;936:39;908:2;901:10;872:113;;;-1:-1:-1;;1019:1:1;1001:16;;994:27;777:250::o;1032:271::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1155:76;1224:6;1217:4;1212:3;1208:14;1201:4;1194:5;1190:16;1155:76;:::i;:::-;1285:2;1264:15;-1:-1:-1;;1260:29:1;1251:39;;;;1292:4;1247:50;;1032:271;-1:-1:-1;;1032:271:1:o;1308:220::-;1457:2;1446:9;1439:21;1420:4;1477:45;1518:2;1507:9;1503:18;1495:6;1477:45;:::i;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:1;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:1:o;2360:808::-;2457:6;2465;2473;2481;2489;2542:3;2530:9;2521:7;2517:23;2513:33;2510:53;;;2559:1;2556;2549:12;2510:53;2582:29;2601:9;2582:29;:::i;:::-;2572:39;;2630:38;2664:2;2653:9;2649:18;2630:38;:::i;:::-;2620:48;;2715:2;2704:9;2700:18;2687:32;2677:42;;2770:2;2759:9;2755:18;2742:32;2793:18;2834:2;2826:6;2823:14;2820:34;;;2850:1;2847;2840:12;2820:34;2888:6;2877:9;2873:22;2863:32;;2933:7;2926:4;2922:2;2918:13;2914:27;2904:55;;2955:1;2952;2945:12;2904:55;2995:2;2982:16;3021:2;3013:6;3010:14;3007:34;;;3037:1;3034;3027:12;3007:34;3082:7;3077:2;3068:6;3064:2;3060:15;3056:24;3053:37;3050:57;;;3103:1;3100;3093:12;3050:57;2360:808;;;;-1:-1:-1;2360:808:1;;-1:-1:-1;3134:2:1;3126:11;;3156:6;2360:808;-1:-1:-1;;;2360:808:1:o;3380:328::-;3457:6;3465;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3565:29;3584:9;3565:29;:::i;:::-;3555:39;;3613:38;3647:2;3636:9;3632:18;3613:38;:::i;:::-;3603:48;;3698:2;3687:9;3683:18;3670:32;3660:42;;3380:328;;;;;:::o;3713:186::-;3772:6;3825:2;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3864:29;3883:9;3864:29;:::i;3904:254::-;3972:6;3980;4033:2;4021:9;4012:7;4008:23;4004:32;4001:52;;;4049:1;4046;4039:12;4001:52;4085:9;4072:23;4062:33;;4114:38;4148:2;4137:9;4133:18;4114:38;:::i;:::-;4104:48;;3904:254;;;;;:::o;4163:347::-;4228:6;4236;4289:2;4277:9;4268:7;4264:23;4260:32;4257:52;;;4305:1;4302;4295:12;4257:52;4328:29;4347:9;4328:29;:::i;:::-;4318:39;;4407:2;4396:9;4392:18;4379:32;4454:5;4447:13;4440:21;4433:5;4430:32;4420:60;;4476:1;4473;4466:12;4420:60;4499:5;4489:15;;;4163:347;;;;;:::o;4515:127::-;4576:10;4571:3;4567:20;4564:1;4557:31;4607:4;4604:1;4597:15;4631:4;4628:1;4621:15;4647:1138;4742:6;4750;4758;4766;4819:3;4807:9;4798:7;4794:23;4790:33;4787:53;;;4836:1;4833;4826:12;4787:53;4859:29;4878:9;4859:29;:::i;:::-;4849:39;;4907:38;4941:2;4930:9;4926:18;4907:38;:::i;:::-;4897:48;;4992:2;4981:9;4977:18;4964:32;4954:42;;5047:2;5036:9;5032:18;5019:32;5070:18;5111:2;5103:6;5100:14;5097:34;;;5127:1;5124;5117:12;5097:34;5165:6;5154:9;5150:22;5140:32;;5210:7;5203:4;5199:2;5195:13;5191:27;5181:55;;5232:1;5229;5222:12;5181:55;5268:2;5255:16;5290:2;5286;5283:10;5280:36;;;5296:18;;:::i;:::-;5371:2;5365:9;5339:2;5425:13;;-1:-1:-1;;5421:22:1;;;5445:2;5417:31;5413:40;5401:53;;;5469:18;;;5489:22;;;5466:46;5463:72;;;5515:18;;:::i;:::-;5555:10;5551:2;5544:22;5590:2;5582:6;5575:18;5630:7;5625:2;5620;5616;5612:11;5608:20;5605:33;5602:53;;;5651:1;5648;5641:12;5602:53;5707:2;5702;5698;5694:11;5689:2;5681:6;5677:15;5664:46;5752:1;5747:2;5742;5734:6;5730:15;5726:24;5719:35;5773:6;5763:16;;;;;;;4647:1138;;;;;;;:::o;5790:260::-;5858:6;5866;5919:2;5907:9;5898:7;5894:23;5890:32;5887:52;;;5935:1;5932;5925:12;5887:52;5958:29;5977:9;5958:29;:::i;:::-;5948:39;;6006:38;6040:2;6029:9;6025:18;6006:38;:::i;6055:380::-;6134:1;6130:12;;;;6177;;;6198:61;;6252:4;6244:6;6240:17;6230:27;;6198:61;6305:2;6297:6;6294:14;6274:18;6271:38;6268:161;;6351:10;6346:3;6342:20;6339:1;6332:31;6386:4;6383:1;6376:15;6414:4;6411:1;6404:15;6268:161;;6055:380;;;:::o;6820:265::-;6893:9;;;6924;;6941:15;;;6935:22;;6921:37;6911:168;;7001:10;6996:3;6992:20;6989:1;6982:31;7036:4;7033:1;7026:15;7064:4;7061:1;7054:15;7090:496;7269:3;7307:6;7301:13;7323:66;7382:6;7377:3;7370:4;7362:6;7358:17;7323:66;:::i;:::-;7452:13;;7411:16;;;;7474:70;7452:13;7411:16;7521:4;7509:17;;7474:70;:::i;:::-;7560:20;;7090:496;-1:-1:-1;;;;7090:496:1:o;7591:489::-;-1:-1:-1;;;;;7860:15:1;;;7842:34;;7912:15;;7907:2;7892:18;;7885:43;7959:2;7944:18;;7937:34;;;8007:3;8002:2;7987:18;;7980:31;;;7785:4;;8028:46;;8054:19;;8046:6;8028:46;:::i;:::-;8020:54;7591:489;-1:-1:-1;;;;;;7591:489:1:o;8085:249::-;8154:6;8207:2;8195:9;8186:7;8182:23;8178:32;8175:52;;;8223:1;8220;8213:12;8175:52;8255:9;8249:16;8274:30;8298:5;8274:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getBalance()":"12065fe0","isApprovedForAll(address,address)":"e985e9c5","mint(uint256,address)":"94bf804d","name()":"06fdde03","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenExists(uint256)":"00923f9e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sendTo\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"MNISTNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"sendTo","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"MNISTNFT"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json deleted file mode 100644 index b90ebf7..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204531b5a6bc47f17ae9728541903b8b24a9fb6178221f026929298cc19449fea564736f6c63430008180033","sourceMap":"8087:14914:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;8087:14914:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204531b5a6bc47f17ae9728541903b8b24a9fb6178221f026929298cc19449fea564736f6c63430008180033","sourceMap":"8087:14914:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json deleted file mode 100644 index b710972..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/SignedMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122085a4a96a835b8d28cf147d27dd54689964a700e3fd30d9c6057aab9b9a8e6ee764736f6c63430008180033","sourceMap":"6812:1047:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;6812:1047:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122085a4a96a835b8d28cf147d27dd54689964a700e3fd30d9c6057aab9b9a8e6ee764736f6c63430008180033","sourceMap":"6812:1047:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json b/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json deleted file mode 100644 index 7a54d18..0000000 --- a/examples/on-chain_mnist/contracts/out/MNISTNFT_Flattened.sol/Strings.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207448557cc61449e3b281a8477395db29a9739589669cbdb3f73dca9b56a406e064736f6c63430008180033","sourceMap":"23188:2847:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;23188:2847:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207448557cc61449e3b281a8477395db29a9739589669cbdb3f73dca9b56a406e064736f6c63430008180033","sourceMap":"23188:2847:0:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MNISTNFT_Flattened.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MNISTNFT_Flattened.sol\":{\"keccak256\":\"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4\",\"urls\":[\"bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891\",\"dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MNISTNFT_Flattened.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"src/MNISTNFT_Flattened.sol":{"keccak256":"0x7d7d560a95c52d45c450e09073d6b89fdacbb171e51ca1b1495abd43ab9583f4","urls":["bzz-raw://994768d2a51ed039dd0083d33ac75ea500508189e9b6b570541365c218a42891","dweb:/ipfs/QmeJLiZg51sCmc7sNcUA69Mu2nA4GsHnicXHXHELQHGoif"],"license":null}},"version":1},"ast":{"absolutePath":"src/MNISTNFT_Flattened.sol","id":2845,"exportedSymbols":{"Context":[1572],"ERC165":[1621],"ERC721":[2753],"IERC1155Errors":[136],"IERC165":[1600],"IERC20Errors":[41],"IERC721":[1735],"IERC721Errors":[89],"IERC721Metadata":[1760],"IERC721Receiver":[1589],"MNISTNFT":[2844],"Math":[1293],"SignedMath":[240],"Strings":[1543]},"nodeType":"SourceUnit","src":"146:53875:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"146:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"312:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"655:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"341:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"661:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"694:6:0","nodeType":"VariableDeclaration","scope":11,"src":"686:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"710:7:0","nodeType":"VariableDeclaration","scope":11,"src":"702:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"727:6:0","nodeType":"VariableDeclaration","scope":11,"src":"719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"685:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"898:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"741:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"904:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"931:6:0","nodeType":"VariableDeclaration","scope":16,"src":"923:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"922:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1109:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"945:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1115:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1144:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1136:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1136:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1135:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1510:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1160:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1516:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1551:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1543:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1568:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1560:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1587:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1542:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1780:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1601:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1786:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1815:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1807:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1807:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1806:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"2031:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1831:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2037:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2065:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2057:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2056:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"172:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"322:12:0","scope":2845,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2220:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2474:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2250:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2480:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2507:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2499:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2498:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2657:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2520:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2663:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2694:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2686:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"3003:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2709:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"3009:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3038:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3030:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3054:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3046:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3046:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3071:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3029:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3241:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3084:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3247:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3275:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3267:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3266:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3453:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3289:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3459:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3489:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3481:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3481:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3480:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3757:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3505:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3763:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3798:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3790:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3816:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3808:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"4010:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3831:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"4016:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4046:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4038:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4264:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4062:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4270:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4300:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4292:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4292:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2078:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2230:13:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4458:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4855:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4489:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4861:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4896:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4888:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4888:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4912:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4904:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4904:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4929:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4921:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4945:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4937:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4937:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5117:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4960:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5123:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5152:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5144:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5144:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5143:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5330:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5166:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5336:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5367:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5359:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5359:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5358:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5644:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5383:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5650:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5687:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5679:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5705:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5697:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5678:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5897:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5718:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5903:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5934:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5926:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6152:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5950:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6158:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6189:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6181:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6180:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6490:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6205:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6496:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6530:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6522:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6522:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6549:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6541:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6521:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4314:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4468:14:0","scope":2845,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]},{"id":137,"nodeType":"PragmaDirective","src":"6705:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":240,"nodeType":"ContractDefinition","src":"6812:1047:0","nodes":[{"id":156,"nodeType":"FunctionDefinition","src":"6908:101:0","nodes":[],"body":{"id":155,"nodeType":"Block","src":"6972:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6989:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"6993:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6989:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":152,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":143,"src":"7001:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6989:13:0","trueExpression":{"id":151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6997:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":147,"id":154,"nodeType":"Return","src":"6982:20:0"}]},"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"6837:66:0","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"6917:3:0","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"a","nameLocation":"6928:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6921:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":140,"name":"int256","nodeType":"ElementaryTypeName","src":"6921:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"b","nameLocation":"6938:1:0","nodeType":"VariableDeclaration","scope":156,"src":"6931:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":142,"name":"int256","nodeType":"ElementaryTypeName","src":"6931:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6920:20:0"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":156,"src":"6964:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":145,"name":"int256","nodeType":"ElementaryTypeName","src":"6964:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6963:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":174,"nodeType":"FunctionDefinition","src":"7087:101:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"7151:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":166,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7168:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7172:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7168:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":170,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161,"src":"7180:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7168:13:0","trueExpression":{"id":169,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7176:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":165,"id":172,"nodeType":"Return","src":"7161:20:0"}]},"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"7015:67:0","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"7096:3:0","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"a","nameLocation":"7107:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7100:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":158,"name":"int256","nodeType":"ElementaryTypeName","src":"7100:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"b","nameLocation":"7117:1:0","nodeType":"VariableDeclaration","scope":174,"src":"7110:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":160,"name":"int256","nodeType":"ElementaryTypeName","src":"7110:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7099:20:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"7143:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":163,"name":"int256","nodeType":"ElementaryTypeName","src":"7143:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7142:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":218,"nodeType":"FunctionDefinition","src":"7325:230:0","nodes":[],"body":{"id":217,"nodeType":"Block","src":"7393:162:0","nodes":[],"statements":[{"assignments":[185],"declarations":[{"constant":false,"id":185,"mutability":"mutable","name":"x","nameLocation":"7462:1:0","nodeType":"VariableDeclaration","scope":217,"src":"7455:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":184,"name":"int256","nodeType":"ElementaryTypeName","src":"7455:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":198,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7467:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":187,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7471:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7467:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7478:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":191,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7478:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7477:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7477:12:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7476:14:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7466:24:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7455:35:0"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7507:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":204,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"7527:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:0","typeDescriptions":{}}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7533:3:0","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"7519:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7512:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":200,"name":"int256","nodeType":"ElementaryTypeName","src":"7512:6:0","typeDescriptions":{}}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7512:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":210,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"7545:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7541:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7540:7:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7512:35:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7511:37:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7507:41:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":183,"id":216,"nodeType":"Return","src":"7500:48:0"}]},"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"7194:126:0","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"7334:7:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"a","nameLocation":"7349:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7342:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":176,"name":"int256","nodeType":"ElementaryTypeName","src":"7342:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"b","nameLocation":"7359:1:0","nodeType":"VariableDeclaration","scope":218,"src":"7352:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":178,"name":"int256","nodeType":"ElementaryTypeName","src":"7352:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7341:20:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":218,"src":"7385:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":181,"name":"int256","nodeType":"ElementaryTypeName","src":"7385:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7384:8:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":239,"nodeType":"FunctionDefinition","src":"7644:213:0","nodes":[],"body":{"id":238,"nodeType":"Block","src":"7699:158:0","nodes":[],"statements":[{"id":237,"nodeType":"UncheckedBlock","src":"7709:142:0","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":228,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7824:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7829:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7824:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7837:2:0","subExpression":{"id":232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7824:15:0","trueExpression":{"id":231,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7816:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7816:7:0","typeDescriptions":{}}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":225,"id":236,"nodeType":"Return","src":"7809:31:0"}]}]},"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"7561:78:0","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"7653:3:0","parameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"n","nameLocation":"7664:1:0","nodeType":"VariableDeclaration","scope":239,"src":"7657:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":220,"name":"int256","nodeType":"ElementaryTypeName","src":"7657:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7656:10:0"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":239,"src":"7690:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7690:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7689:9:0"},"scope":240,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"6731:80:0","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[240],"name":"SignedMath","nameLocation":"6820:10:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":241,"nodeType":"PragmaDirective","src":"7987:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1293,"nodeType":"ContractDefinition","src":"8087:14914:0","nodes":[{"id":245,"nodeType":"ErrorDefinition","src":"8161:29:0","nodes":[],"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"8106:50:0","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"8167:20:0","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"8187:2:0"}},{"id":250,"nodeType":"EnumDefinition","src":"8196:169:0","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":246,"name":"Floor","nameLocation":"8220:5:0","nodeType":"EnumValue","src":"8220:5:0"},{"id":247,"name":"Ceil","nameLocation":"8263:4:0","nodeType":"EnumValue","src":"8263:4:0"},{"id":248,"name":"Trunc","nameLocation":"8305:5:0","nodeType":"EnumValue","src":"8305:5:0"},{"id":249,"name":"Expand","nameLocation":"8335:6:0","nodeType":"EnumValue","src":"8335:6:0"}],"name":"Rounding","nameLocation":"8201:8:0"},{"id":282,"nodeType":"FunctionDefinition","src":"8469:216:0","nodes":[],"body":{"id":281,"nodeType":"Block","src":"8545:140:0","nodes":[],"statements":[{"id":280,"nodeType":"UncheckedBlock","src":"8555:124:0","statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"c","nameLocation":"8587:1:0","nodeType":"VariableDeclaration","scope":280,"src":"8579:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":264,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8591:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":265,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"8595:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8579:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":268,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8614:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":269,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"8618:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8614:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"8610:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8629:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":273,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8628:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":261,"id":274,"nodeType":"Return","src":"8621:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8660:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":277,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"8666:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8659:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":261,"id":279,"nodeType":"Return","src":"8652:16:0"}]}]},"documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"8371:93:0","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"8478:6:0","parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":253,"mutability":"mutable","name":"a","nameLocation":"8493:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"8485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"b","nameLocation":"8504:1:0","nodeType":"VariableDeclaration","scope":282,"src":"8496:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8496:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8484:22:0"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8530:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":257,"name":"bool","nodeType":"ElementaryTypeName","src":"8530:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":282,"src":"8536:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8536:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8529:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":310,"nodeType":"FunctionDefinition","src":"8792:189:0","nodes":[],"body":{"id":309,"nodeType":"Block","src":"8868:113:0","nodes":[],"statements":[{"id":308,"nodeType":"UncheckedBlock","src":"8878:97:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8906:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":295,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8910:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8906:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"8902:28:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8921:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8920:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":293,"id":300,"nodeType":"Return","src":"8913:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8952:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"8958:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":304,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"8962:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8958:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8951:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":293,"id":307,"nodeType":"Return","src":"8944:20:0"}]}]},"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"8691:96:0","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"8801:6:0","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"a","nameLocation":"8816:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8808:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8808:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"b","nameLocation":"8827:1:0","nodeType":"VariableDeclaration","scope":310,"src":"8819:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8807:22:0"},"returnParameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8853:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":289,"name":"bool","nodeType":"ElementaryTypeName","src":"8853:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":310,"src":"8859:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"8859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":352,"nodeType":"FunctionDefinition","src":"9091:493:0","nodes":[],"body":{"id":351,"nodeType":"Block","src":"9167:417:0","nodes":[],"statements":[{"id":350,"nodeType":"UncheckedBlock","src":"9177:401:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9435:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9440:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9435:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":329,"nodeType":"IfStatement","src":"9431:28:0","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9451:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9450:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":328,"nodeType":"Return","src":"9443:16:0"}},{"assignments":[331],"declarations":[{"constant":false,"id":331,"mutability":"mutable","name":"c","nameLocation":"9481:1:0","nodeType":"VariableDeclaration","scope":350,"src":"9473:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":330,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9485:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9489:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9473:17:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9508:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":337,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"9512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"9517:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9508:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"IfStatement","src":"9504:33:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9528:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9535:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9527:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":321,"id":344,"nodeType":"Return","src":"9520:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9559:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":347,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"9565:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":321,"id":349,"nodeType":"Return","src":"9551:16:0"}]}]},"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"8987:99:0","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"9100:6:0","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"a","nameLocation":"9115:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9107:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"b","nameLocation":"9126:1:0","nodeType":"VariableDeclaration","scope":352,"src":"9118:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9106:22:0"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9152:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"9152:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":352,"src":"9158:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9151:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":380,"nodeType":"FunctionDefinition","src":"9695:190:0","nodes":[],"body":{"id":379,"nodeType":"Block","src":"9771:114:0","nodes":[],"statements":[{"id":378,"nodeType":"UncheckedBlock","src":"9781:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9809:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9809:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":371,"nodeType":"IfStatement","src":"9805:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9825:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9832:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9824:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":363,"id":370,"nodeType":"Return","src":"9817:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9856:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":355,"src":"9862:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":374,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":357,"src":"9866:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9862:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9855:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":363,"id":377,"nodeType":"Return","src":"9848:20:0"}]}]},"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"9590:100:0","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"9704:6:0","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":355,"mutability":"mutable","name":"a","nameLocation":"9719:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9711:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"9711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":357,"mutability":"mutable","name":"b","nameLocation":"9730:1:0","nodeType":"VariableDeclaration","scope":380,"src":"9722:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9710:22:0"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9756:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"9756:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":380,"src":"9762:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9755:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":408,"nodeType":"FunctionDefinition","src":"10006:190:0","nodes":[],"body":{"id":407,"nodeType":"Block","src":"10082:114:0","nodes":[],"statements":[{"id":406,"nodeType":"UncheckedBlock","src":"10092:98:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":392,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10120:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10125:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10120:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"10116:29:0","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10136:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10143:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10135:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":391,"id":398,"nodeType":"Return","src":"10128:17:0"}},{"expression":{"components":[{"hexValue":"74727565","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10167:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":401,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"10173:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":402,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":385,"src":"10177:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10173:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10166:13:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":391,"id":405,"nodeType":"Return","src":"10159:20:0"}]}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"9891:110:0","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"10015:6:0","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"mutability":"mutable","name":"a","nameLocation":"10030:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10022:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"10022:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"mutability":"mutable","name":"b","nameLocation":"10041:1:0","nodeType":"VariableDeclaration","scope":408,"src":"10033:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"10033:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10021:22:0"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10067:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":387,"name":"bool","nodeType":"ElementaryTypeName","src":"10067:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":408,"src":"10073:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10066:15:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":426,"nodeType":"FunctionDefinition","src":"10266:104:0","nodes":[],"body":{"id":425,"nodeType":"Block","src":"10333:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10350:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10354:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10350:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"10362:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10350:13:0","trueExpression":{"id":421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"10358:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":417,"id":424,"nodeType":"Return","src":"10343:20:0"}]},"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"10202:59:0","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"10275:3:0","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"a","nameLocation":"10287:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10279:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"b","nameLocation":"10298:1:0","nodeType":"VariableDeclaration","scope":426,"src":"10290:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10278:22:0"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":426,"src":"10324:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"10324:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10323:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":444,"nodeType":"FunctionDefinition","src":"10441:104:0","nodes":[],"body":{"id":443,"nodeType":"Block","src":"10508:37:0","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10525:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":437,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10529:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10525:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":440,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"10537:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10525:13:0","trueExpression":{"id":439,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"10533:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":435,"id":442,"nodeType":"Return","src":"10518:20:0"}]},"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"10376:60:0","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"10450:3:0","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"a","nameLocation":"10462:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10454:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"10454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"b","nameLocation":"10473:1:0","nodeType":"VariableDeclaration","scope":444,"src":"10465:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10453:22:0"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"10499:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10498:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":467,"nodeType":"FunctionDefinition","src":"10658:153:0","nodes":[],"body":{"id":466,"nodeType":"Block","src":"10729:82:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10784:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10788:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10783:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"10794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":459,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10798:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10794:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10793:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10783:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":453,"id":465,"nodeType":"Return","src":"10776:28:0"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"10551:102:0","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"10667:7:0","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"a","nameLocation":"10683:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10675:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10675:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"b","nameLocation":"10694:1:0","nodeType":"VariableDeclaration","scope":467,"src":"10686:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10686:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:22:0"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":467,"src":"10720:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10719:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":501,"nodeType":"FunctionDefinition","src":"11032:331:0","nodes":[],"body":{"id":500,"nodeType":"Block","src":"11103:260:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11117:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":485,"nodeType":"IfStatement","src":"11113:127:0","trueBody":{"id":484,"nodeType":"Block","src":"11125:115:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11224:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":481,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11228:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":483,"nodeType":"Return","src":"11217:12:0"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11333:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11328:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"11342:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11346:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11341:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":494,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"11351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11341:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11355:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11341:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11328:28:0","trueExpression":{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11337:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":476,"id":499,"nodeType":"Return","src":"11321:35:0"}]},"documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"10817:210:0","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"11041:7:0","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"a","nameLocation":"11057:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11049:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"b","nameLocation":"11068:1:0","nodeType":"VariableDeclaration","scope":501,"src":"11060:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11060:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11048:22:0"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":501,"src":"11094:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11094:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11093:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"11687:4116:0","nodes":[],"body":{"id":626,"nodeType":"Block","src":"11785:4018:0","nodes":[],"statements":[{"id":625,"nodeType":"UncheckedBlock","src":"11795:4002:0","statements":[{"assignments":[514],"declarations":[{"constant":false,"id":514,"mutability":"mutable","name":"prod0","nameLocation":"12124:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12116:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"12116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12132:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"12136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12116:21:0"},{"assignments":[520],"declarations":[{"constant":false,"id":520,"mutability":"mutable","name":"prod1","nameLocation":"12204:5:0","nodeType":"VariableDeclaration","scope":625,"src":"12196:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":521,"nodeType":"VariableDeclarationStatement","src":"12196:13:0"},{"AST":{"nativeSrc":"12276:122:0","nodeType":"YulBlock","src":"12276:122:0","statements":[{"nativeSrc":"12294:30:0","nodeType":"YulVariableDeclaration","src":"12294:30:0","value":{"arguments":[{"name":"x","nativeSrc":"12311:1:0","nodeType":"YulIdentifier","src":"12311:1:0"},{"name":"y","nativeSrc":"12314:1:0","nodeType":"YulIdentifier","src":"12314:1:0"},{"arguments":[{"kind":"number","nativeSrc":"12321:1:0","nodeType":"YulLiteral","src":"12321:1:0","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12317:3:0","nodeType":"YulIdentifier","src":"12317:3:0"},"nativeSrc":"12317:6:0","nodeType":"YulFunctionCall","src":"12317:6:0"}],"functionName":{"name":"mulmod","nativeSrc":"12304:6:0","nodeType":"YulIdentifier","src":"12304:6:0"},"nativeSrc":"12304:20:0","nodeType":"YulFunctionCall","src":"12304:20:0"},"variables":[{"name":"mm","nativeSrc":"12298:2:0","nodeType":"YulTypedName","src":"12298:2:0","type":""}]},{"nativeSrc":"12341:43:0","nodeType":"YulAssignment","src":"12341:43:0","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"12358:2:0","nodeType":"YulIdentifier","src":"12358:2:0"},{"name":"prod0","nativeSrc":"12362:5:0","nodeType":"YulIdentifier","src":"12362:5:0"}],"functionName":{"name":"sub","nativeSrc":"12354:3:0","nodeType":"YulIdentifier","src":"12354:3:0"},"nativeSrc":"12354:14:0","nodeType":"YulFunctionCall","src":"12354:14:0"},{"arguments":[{"name":"mm","nativeSrc":"12373:2:0","nodeType":"YulIdentifier","src":"12373:2:0"},{"name":"prod0","nativeSrc":"12377:5:0","nodeType":"YulIdentifier","src":"12377:5:0"}],"functionName":{"name":"lt","nativeSrc":"12370:2:0","nodeType":"YulIdentifier","src":"12370:2:0"},"nativeSrc":"12370:13:0","nodeType":"YulFunctionCall","src":"12370:13:0"}],"functionName":{"name":"sub","nativeSrc":"12350:3:0","nodeType":"YulIdentifier","src":"12350:3:0"},"nativeSrc":"12350:34:0","nodeType":"YulFunctionCall","src":"12350:34:0"},"variableNames":[{"name":"prod1","nativeSrc":"12341:5:0","nodeType":"YulIdentifier","src":"12341:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":514,"isOffset":false,"isSlot":false,"src":"12362:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"12377:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"12341:5:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"12311:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"12314:1:0","valueSize":1}],"id":522,"nodeType":"InlineAssembly","src":"12267:131:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12479:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12479:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":531,"nodeType":"IfStatement","src":"12475:368:0","trueBody":{"id":530,"nodeType":"Block","src":"12491:352:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":526,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"12809:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":527,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12817:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12809:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":529,"nodeType":"Return","src":"12802:26:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"12949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":533,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"12964:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12949:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":539,"nodeType":"IfStatement","src":"12945:88:0","trueBody":{"id":538,"nodeType":"Block","src":"12971:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":535,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"12996:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12996:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"RevertStatement","src":"12989:29:0"}]}},{"assignments":[541],"declarations":[{"constant":false,"id":541,"mutability":"mutable","name":"remainder","nameLocation":"13296:9:0","nodeType":"VariableDeclaration","scope":625,"src":"13288:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13288:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":542,"nodeType":"VariableDeclarationStatement","src":"13288:17:0"},{"AST":{"nativeSrc":"13328:291:0","nodeType":"YulBlock","src":"13328:291:0","statements":[{"nativeSrc":"13397:38:0","nodeType":"YulAssignment","src":"13397:38:0","value":{"arguments":[{"name":"x","nativeSrc":"13417:1:0","nodeType":"YulIdentifier","src":"13417:1:0"},{"name":"y","nativeSrc":"13420:1:0","nodeType":"YulIdentifier","src":"13420:1:0"},{"name":"denominator","nativeSrc":"13423:11:0","nodeType":"YulIdentifier","src":"13423:11:0"}],"functionName":{"name":"mulmod","nativeSrc":"13410:6:0","nodeType":"YulIdentifier","src":"13410:6:0"},"nativeSrc":"13410:25:0","nodeType":"YulFunctionCall","src":"13410:25:0"},"variableNames":[{"name":"remainder","nativeSrc":"13397:9:0","nodeType":"YulIdentifier","src":"13397:9:0"}]},{"nativeSrc":"13517:41:0","nodeType":"YulAssignment","src":"13517:41:0","value":{"arguments":[{"name":"prod1","nativeSrc":"13530:5:0","nodeType":"YulIdentifier","src":"13530:5:0"},{"arguments":[{"name":"remainder","nativeSrc":"13540:9:0","nodeType":"YulIdentifier","src":"13540:9:0"},{"name":"prod0","nativeSrc":"13551:5:0","nodeType":"YulIdentifier","src":"13551:5:0"}],"functionName":{"name":"gt","nativeSrc":"13537:2:0","nodeType":"YulIdentifier","src":"13537:2:0"},"nativeSrc":"13537:20:0","nodeType":"YulFunctionCall","src":"13537:20:0"}],"functionName":{"name":"sub","nativeSrc":"13526:3:0","nodeType":"YulIdentifier","src":"13526:3:0"},"nativeSrc":"13526:32:0","nodeType":"YulFunctionCall","src":"13526:32:0"},"variableNames":[{"name":"prod1","nativeSrc":"13517:5:0","nodeType":"YulIdentifier","src":"13517:5:0"}]},{"nativeSrc":"13575:30:0","nodeType":"YulAssignment","src":"13575:30:0","value":{"arguments":[{"name":"prod0","nativeSrc":"13588:5:0","nodeType":"YulIdentifier","src":"13588:5:0"},{"name":"remainder","nativeSrc":"13595:9:0","nodeType":"YulIdentifier","src":"13595:9:0"}],"functionName":{"name":"sub","nativeSrc":"13584:3:0","nodeType":"YulIdentifier","src":"13584:3:0"},"nativeSrc":"13584:21:0","nodeType":"YulFunctionCall","src":"13584:21:0"},"variableNames":[{"name":"prod0","nativeSrc":"13575:5:0","nodeType":"YulIdentifier","src":"13575:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13423:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13551:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13575:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"13588:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13517:5:0","valueSize":1},{"declaration":520,"isOffset":false,"isSlot":false,"src":"13530:5:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13397:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13540:9:0","valueSize":1},{"declaration":541,"isOffset":false,"isSlot":false,"src":"13595:9:0","valueSize":1},{"declaration":504,"isOffset":false,"isSlot":false,"src":"13417:1:0","valueSize":1},{"declaration":506,"isOffset":false,"isSlot":false,"src":"13420:1:0","valueSize":1}],"id":543,"nodeType":"InlineAssembly","src":"13319:300:0"},{"assignments":[545],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"twos","nameLocation":"13831:4:0","nodeType":"VariableDeclaration","scope":625,"src":"13823:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13823:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13838:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"13857:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13853:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13852:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13838:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13823:46:0"},{"AST":{"nativeSrc":"13892:362:0","nodeType":"YulBlock","src":"13892:362:0","statements":[{"nativeSrc":"13957:37:0","nodeType":"YulAssignment","src":"13957:37:0","value":{"arguments":[{"name":"denominator","nativeSrc":"13976:11:0","nodeType":"YulIdentifier","src":"13976:11:0"},{"name":"twos","nativeSrc":"13989:4:0","nodeType":"YulIdentifier","src":"13989:4:0"}],"functionName":{"name":"div","nativeSrc":"13972:3:0","nodeType":"YulIdentifier","src":"13972:3:0"},"nativeSrc":"13972:22:0","nodeType":"YulFunctionCall","src":"13972:22:0"},"variableNames":[{"name":"denominator","nativeSrc":"13957:11:0","nodeType":"YulIdentifier","src":"13957:11:0"}]},{"nativeSrc":"14061:25:0","nodeType":"YulAssignment","src":"14061:25:0","value":{"arguments":[{"name":"prod0","nativeSrc":"14074:5:0","nodeType":"YulIdentifier","src":"14074:5:0"},{"name":"twos","nativeSrc":"14081:4:0","nodeType":"YulIdentifier","src":"14081:4:0"}],"functionName":{"name":"div","nativeSrc":"14070:3:0","nodeType":"YulIdentifier","src":"14070:3:0"},"nativeSrc":"14070:16:0","nodeType":"YulFunctionCall","src":"14070:16:0"},"variableNames":[{"name":"prod0","nativeSrc":"14061:5:0","nodeType":"YulIdentifier","src":"14061:5:0"}]},{"nativeSrc":"14201:39:0","nodeType":"YulAssignment","src":"14201:39:0","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14221:1:0","nodeType":"YulLiteral","src":"14221:1:0","type":"","value":"0"},{"name":"twos","nativeSrc":"14224:4:0","nodeType":"YulIdentifier","src":"14224:4:0"}],"functionName":{"name":"sub","nativeSrc":"14217:3:0","nodeType":"YulIdentifier","src":"14217:3:0"},"nativeSrc":"14217:12:0","nodeType":"YulFunctionCall","src":"14217:12:0"},{"name":"twos","nativeSrc":"14231:4:0","nodeType":"YulIdentifier","src":"14231:4:0"}],"functionName":{"name":"div","nativeSrc":"14213:3:0","nodeType":"YulIdentifier","src":"14213:3:0"},"nativeSrc":"14213:23:0","nodeType":"YulFunctionCall","src":"14213:23:0"},{"kind":"number","nativeSrc":"14238:1:0","nodeType":"YulLiteral","src":"14238:1:0","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14209:3:0","nodeType":"YulIdentifier","src":"14209:3:0"},"nativeSrc":"14209:31:0","nodeType":"YulFunctionCall","src":"14209:31:0"},"variableNames":[{"name":"twos","nativeSrc":"14201:4:0","nodeType":"YulIdentifier","src":"14201:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":508,"isOffset":false,"isSlot":false,"src":"13957:11:0","valueSize":1},{"declaration":508,"isOffset":false,"isSlot":false,"src":"13976:11:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14061:5:0","valueSize":1},{"declaration":514,"isOffset":false,"isSlot":false,"src":"14074:5:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"13989:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14081:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14201:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14224:4:0","valueSize":1},{"declaration":545,"isOffset":false,"isSlot":false,"src":"14231:4:0","valueSize":1}],"id":553,"nodeType":"InlineAssembly","src":"13883:371:0"},{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"14320:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"14329:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":556,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"14337:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ExpressionStatement","src":"14320:21:0"},{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"inverse","nameLocation":"14667:7:0","nodeType":"VariableDeclaration","scope":625,"src":"14659:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14678:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":563,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14682:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14678:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":565,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14677:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14697:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14677:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14659:39:0"},{"expression":{"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14926:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":572,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14944:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14930:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14926:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":576,"nodeType":"ExpressionStatement","src":"14915:36:0"},{"expression":{"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":577,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"14984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14995:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"14999:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":580,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15013:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14999:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14995:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14984:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":584,"nodeType":"ExpressionStatement","src":"14984:36:0"},{"expression":{"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":585,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15065:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":587,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15069:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":588,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15083:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15069:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15065:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15054:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":592,"nodeType":"ExpressionStatement","src":"15054:36:0"},{"expression":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15135:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15139:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":596,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15139:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15135:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15124:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":600,"nodeType":"ExpressionStatement","src":"15124:36:0"},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":601,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":603,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15209:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":604,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15209:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15205:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"nodeType":"ExpressionStatement","src":"15194:36:0"},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15265:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":611,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"15280:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":612,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15280:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15276:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15265:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"15265:36:0"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":617,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15735:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":618,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"15744:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":619,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"15752:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15744:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15735:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"15735:24:0"},{"expression":{"id":623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"15780:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":512,"id":624,"nodeType":"Return","src":"15773:13:0"}]}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"11369:313:0","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11696:6:0","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"x","nameLocation":"11711:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11703:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":503,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"y","nameLocation":"11722:1:0","nodeType":"VariableDeclaration","scope":627,"src":"11714:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"11714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"denominator","nameLocation":"11733:11:0","nodeType":"VariableDeclaration","scope":627,"src":"11725:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":507,"name":"uint256","nodeType":"ElementaryTypeName","src":"11725:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11702:43:0"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"result","nameLocation":"11777:6:0","nodeType":"VariableDeclaration","scope":627,"src":"11769:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11768:16:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":670,"nodeType":"FunctionDefinition","src":"15935:302:0","nodes":[],"body":{"id":669,"nodeType":"Block","src":"16045:192:0","nodes":[],"statements":[{"assignments":[643],"declarations":[{"constant":false,"id":643,"mutability":"mutable","name":"result","nameLocation":"16063:6:0","nodeType":"VariableDeclaration","scope":669,"src":"16055:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"16055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":649,"initialValue":{"arguments":[{"id":645,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16079:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":646,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16082:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":647,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16085:11: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":644,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[627,670],"referencedDeclaration":627,"src":"16072:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_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,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16055:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":651,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"16128:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":650,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"16111:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16111:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":654,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"16148:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":655,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"16151:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"16154:11: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":653,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"16141: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":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16141:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16169:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16141:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16111:59:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":666,"nodeType":"IfStatement","src":"16107:101:0","trueBody":{"id":665,"nodeType":"Block","src":"16172:36:0","statements":[{"expression":{"id":663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16186:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16186:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ExpressionStatement","src":"16186:11:0"}]}},{"expression":{"id":667,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"16224:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":668,"nodeType":"Return","src":"16217:13:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"15809:121:0","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"15944:6:0","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"x","nameLocation":"15959:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15951:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"15951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"y","nameLocation":"15970:1:0","nodeType":"VariableDeclaration","scope":670,"src":"15962:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"denominator","nameLocation":"15981:11:0","nodeType":"VariableDeclaration","scope":670,"src":"15973:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"rounding","nameLocation":"16003:8:0","nodeType":"VariableDeclaration","scope":670,"src":"15994:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["15994:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"15994:8:0"},"referencedDeclaration":250,"src":"15994:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15950:62:0"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":670,"src":"16036:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16035:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":782,"nodeType":"FunctionDefinition","src":"16471:1642:0","nodes":[],"body":{"id":781,"nodeType":"Block","src":"16528:1585:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"16542:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16547:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16542:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":684,"nodeType":"IfStatement","src":"16538:45:0","trueBody":{"id":683,"nodeType":"Block","src":"16550:33:0","statements":[{"expression":{"hexValue":"30","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16571:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":677,"id":682,"nodeType":"Return","src":"16564:8:0"}]}},{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"result","nameLocation":"17270:6:0","nodeType":"VariableDeclaration","scope":781,"src":"17262:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"17262:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":695,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17279:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17290:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":688,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"17285:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17285:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17285:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17284:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17262:36:0"},{"id":780,"nodeType":"UncheckedBlock","src":"17699:408:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17723:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17733:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":698,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17746:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17742:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17733:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17732:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17757:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17732:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17723:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"17723:35:0"},{"expression":{"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17772:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17782:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17791:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":710,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17795:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17791:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17781:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17781:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17772:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":717,"nodeType":"ExpressionStatement","src":"17772:35:0"},{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":718,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17821:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":719,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17840:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17844:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17840:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17831:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17830:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17830:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17821:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":728,"nodeType":"ExpressionStatement","src":"17821:35:0"},{"expression":{"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17889:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":732,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17893:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17889:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17880:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17879:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17904:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17879:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17870:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":739,"nodeType":"ExpressionStatement","src":"17870:35:0"},{"expression":{"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17919:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17929:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17938:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17942:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17938:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17929:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17928:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17953:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17928:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17919:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":750,"nodeType":"ExpressionStatement","src":"17919:35:0"},{"expression":{"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"17987:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"17991:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17987:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17978:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17977:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18002:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17977:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17968:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":761,"nodeType":"ExpressionStatement","src":"17968:35:0"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":762,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18017:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18036:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18040:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18036:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18027:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18026:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18051:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18026:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18017:35:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":772,"nodeType":"ExpressionStatement","src":"18017:35:0"},{"expression":{"arguments":[{"id":774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18077:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"18085:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"18089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18085:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"18073:3:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18073:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":677,"id":779,"nodeType":"Return","src":"18066:30:0"}]}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"16243:223:0","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"16480:4:0","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"a","nameLocation":"16493:1:0","nodeType":"VariableDeclaration","scope":782,"src":"16485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"16485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16484:11:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":782,"src":"16519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"16519:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16518:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":817,"nodeType":"FunctionDefinition","src":"18213:240:0","nodes":[],"body":{"id":816,"nodeType":"Block","src":"18289:164:0","nodes":[],"statements":[{"id":815,"nodeType":"UncheckedBlock","src":"18299:148:0","statements":[{"assignments":[794],"declarations":[{"constant":false,"id":794,"mutability":"mutable","name":"result","nameLocation":"18331:6:0","nodeType":"VariableDeclaration","scope":815,"src":"18323:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"18323:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":798,"initialValue":{"arguments":[{"id":796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18345:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":795,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[782,817],"referencedDeclaration":782,"src":"18340:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18323:24:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18368:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":801,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"18395:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":800,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"18378:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18408:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":804,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"18417:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"18426:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18408:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18378:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18378:57:0","trueExpression":{"hexValue":"31","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":812,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18377:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18368:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":792,"id":814,"nodeType":"Return","src":"18361:75:0"}]}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"18119:89:0","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18222:4:0","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"a","nameLocation":"18235:1:0","nodeType":"VariableDeclaration","scope":817,"src":"18227:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18227:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"rounding","nameLocation":"18247:8:0","nodeType":"VariableDeclaration","scope":817,"src":"18238:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":787,"nodeType":"UserDefinedTypeName","pathNode":{"id":786,"name":"Rounding","nameLocations":["18238:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"18238:8:0"},"referencedDeclaration":250,"src":"18238:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"18226:30:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":817,"src":"18280:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":790,"name":"uint256","nodeType":"ElementaryTypeName","src":"18280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18279:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":949,"nodeType":"FunctionDefinition","src":"18583:983:0","nodes":[],"body":{"id":948,"nodeType":"Block","src":"18644:922:0","nodes":[],"statements":[{"assignments":[826],"declarations":[{"constant":false,"id":826,"mutability":"mutable","name":"result","nameLocation":"18662:6:0","nodeType":"VariableDeclaration","scope":948,"src":"18654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"18654:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":828,"initialValue":{"hexValue":"30","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18671:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18654:18:0"},{"id":945,"nodeType":"UncheckedBlock","src":"18682:855:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18710:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18719:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18710:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18725:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18710:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"18706:99:0","trueBody":{"id":842,"nodeType":"Block","src":"18728:77:0","statements":[{"expression":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18746:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18756:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18746:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":837,"nodeType":"ExpressionStatement","src":"18746:13:0"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18777:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"18777:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"18777:13:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18822:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18831:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18822:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18836:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18822:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":858,"nodeType":"IfStatement","src":"18818:96:0","trueBody":{"id":857,"nodeType":"Block","src":"18839:75:0","statements":[{"expression":{"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18857:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18857:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":852,"nodeType":"ExpressionStatement","src":"18857:12:0"},{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18887:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18897:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"18887:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":856,"nodeType":"ExpressionStatement","src":"18887:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18931:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18931:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18945:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18931:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":873,"nodeType":"IfStatement","src":"18927:96:0","trueBody":{"id":872,"nodeType":"Block","src":"18948:75:0","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"18966:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18976:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18966:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":867,"nodeType":"ExpressionStatement","src":"18966:12:0"},{"expression":{"id":870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"18996:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"18996:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":871,"nodeType":"ExpressionStatement","src":"18996:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19049:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19040:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19054:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19040:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"19036:96:0","trueBody":{"id":887,"nodeType":"Block","src":"19057:75:0","statements":[{"expression":{"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19075:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19085:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19075:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":882,"nodeType":"ExpressionStatement","src":"19075:12:0"},{"expression":{"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19105:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19115:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19105:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":886,"nodeType":"ExpressionStatement","src":"19105:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19149:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19158:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19149:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19162:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19149:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":903,"nodeType":"IfStatement","src":"19145:93:0","trueBody":{"id":902,"nodeType":"Block","src":"19165:73:0","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19193:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19183:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":897,"nodeType":"ExpressionStatement","src":"19183:11:0"},{"expression":{"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19212:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19212:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":901,"nodeType":"ExpressionStatement","src":"19212:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19255:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19264:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19255:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19268:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19255:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"IfStatement","src":"19251:93:0","trueBody":{"id":917,"nodeType":"Block","src":"19271:73:0","statements":[{"expression":{"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19289:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19299:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19289:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ExpressionStatement","src":"19289:11:0"},{"expression":{"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19318:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19328:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19318:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":916,"nodeType":"ExpressionStatement","src":"19318:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19361:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19361:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19374:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19361:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"19357:93:0","trueBody":{"id":932,"nodeType":"Block","src":"19377:73:0","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19395:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19395:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"19395:11:0"},{"expression":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19424:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19434:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19424:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":931,"nodeType":"ExpressionStatement","src":"19424:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"19467:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19476:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19467:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19467:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"19463:64:0","trueBody":{"id":943,"nodeType":"Block","src":"19483:44:0","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19501:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19501:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":942,"nodeType":"ExpressionStatement","src":"19501:11:0"}]}}]},{"expression":{"id":946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"19553:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":824,"id":947,"nodeType":"Return","src":"19546:13:0"}]},"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"18459:119:0","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"18592:4:0","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"18605:5:0","nodeType":"VariableDeclaration","scope":949,"src":"18597:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"18597:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18596:15:0"},"returnParameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":949,"src":"18635:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":822,"name":"uint256","nodeType":"ElementaryTypeName","src":"18635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18634:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":984,"nodeType":"FunctionDefinition","src":"19719:248:0","nodes":[],"body":{"id":983,"nodeType":"Block","src":"19799:168:0","nodes":[],"statements":[{"id":982,"nodeType":"UncheckedBlock","src":"19809:152:0","statements":[{"assignments":[961],"declarations":[{"constant":false,"id":961,"mutability":"mutable","name":"result","nameLocation":"19841:6:0","nodeType":"VariableDeclaration","scope":982,"src":"19833:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"19833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[{"id":963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":962,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[949,984],"referencedDeclaration":949,"src":"19850:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19850:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19833:28:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19882:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":968,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"19909:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":967,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"19892:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19922:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":971,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"19927:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"19936:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19922:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19892:49:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19948:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19892:57:0","trueExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19944:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19891:59:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19882:68:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":981,"nodeType":"Return","src":"19875:75:0"}]}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"19572:142:0","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"19728:4:0","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"value","nameLocation":"19741:5:0","nodeType":"VariableDeclaration","scope":984,"src":"19733:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"19733:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"rounding","nameLocation":"19757:8:0","nodeType":"VariableDeclaration","scope":984,"src":"19748:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":954,"nodeType":"UserDefinedTypeName","pathNode":{"id":953,"name":"Rounding","nameLocations":["19748:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"19748:8:0"},"referencedDeclaration":250,"src":"19748:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"19732:34:0"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":984,"src":"19790:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"19790:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1113,"nodeType":"FunctionDefinition","src":"20098:916:0","nodes":[],"body":{"id":1112,"nodeType":"Block","src":"20160:854:0","nodes":[],"statements":[{"assignments":[993],"declarations":[{"constant":false,"id":993,"mutability":"mutable","name":"result","nameLocation":"20178:6:0","nodeType":"VariableDeclaration","scope":1112,"src":"20170:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":992,"name":"uint256","nodeType":"ElementaryTypeName","src":"20170:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"initialValue":{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20187:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20170:18:0"},{"id":1109,"nodeType":"UncheckedBlock","src":"20198:787:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20226:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20235:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20241:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20235:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20226:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1012,"nodeType":"IfStatement","src":"20222:103:0","trueBody":{"id":1011,"nodeType":"Block","src":"20245:80:0","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20272:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20278:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20272:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"20263:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ExpressionStatement","src":"20263:17:0"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20298:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20308:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"20298:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"20298:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20342:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20357:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20351:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20342:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"20338:103:0","trueBody":{"id":1028,"nodeType":"Block","src":"20361:80:0","statements":[{"expression":{"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20379:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20388:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20394:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20388:8:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"20379:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1023,"nodeType":"ExpressionStatement","src":"20379:17:0"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20414:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"20414:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1027,"nodeType":"ExpressionStatement","src":"20414:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20458:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20467:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20473:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20467:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20458:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1046,"nodeType":"IfStatement","src":"20454:103:0","trueBody":{"id":1045,"nodeType":"Block","src":"20477:80:0","statements":[{"expression":{"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20495:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20504:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20510:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20504:8:0","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"20495:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1040,"nodeType":"ExpressionStatement","src":"20495:17:0"},{"expression":{"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20530:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20540:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"20530:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ExpressionStatement","src":"20530:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20574:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20583:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20589:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20583:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20574:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"20570:100:0","trueBody":{"id":1062,"nodeType":"Block","src":"20592:78:0","statements":[{"expression":{"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20610:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20619:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20619:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"20610:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1057,"nodeType":"ExpressionStatement","src":"20610:16:0"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20644:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"20644:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"20644:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20687:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20696:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20702:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20696:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20687:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1080,"nodeType":"IfStatement","src":"20683:100:0","trueBody":{"id":1079,"nodeType":"Block","src":"20705:78:0","statements":[{"expression":{"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20723:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20732:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20738:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20732:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"20723:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1074,"nodeType":"ExpressionStatement","src":"20723:16:0"},{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20757:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20767:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"20757:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1078,"nodeType":"ExpressionStatement","src":"20757:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20800:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20809:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20815:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20809:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20800:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1097,"nodeType":"IfStatement","src":"20796:100:0","trueBody":{"id":1096,"nodeType":"Block","src":"20818:78:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20836:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20845:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20851:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20845:7:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"20836:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1091,"nodeType":"ExpressionStatement","src":"20836:16:0"},{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20870:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20880:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"20870:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1095,"nodeType":"ExpressionStatement","src":"20870:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"20913:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20922:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20928:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"20913:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1108,"nodeType":"IfStatement","src":"20909:66:0","trueBody":{"id":1107,"nodeType":"Block","src":"20931:44:0","statements":[{"expression":{"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1103,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"20949:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20959:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20949:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1106,"nodeType":"ExpressionStatement","src":"20949:11:0"}]}}]},{"expression":{"id":1110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"21001:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":991,"id":1111,"nodeType":"Return","src":"20994:13:0"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"19973:120:0","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"20107:5:0","parameters":{"id":988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"value","nameLocation":"20121:5:0","nodeType":"VariableDeclaration","scope":1113,"src":"20113:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"20113:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20112:15:0"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1113,"src":"20151:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20150:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1148,"nodeType":"FunctionDefinition","src":"21168:251:0","nodes":[],"body":{"id":1147,"nodeType":"Block","src":"21249:170:0","nodes":[],"statements":[{"id":1146,"nodeType":"UncheckedBlock","src":"21259:154:0","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"result","nameLocation":"21291:6:0","nodeType":"VariableDeclaration","scope":1146,"src":"21283:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"21283:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1129,"initialValue":{"arguments":[{"id":1127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21306:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1113,1148],"referencedDeclaration":1113,"src":"21300:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21300:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21283:29:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21333:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"21360:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1131,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"21343:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21343:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21373:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"21379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"21388:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21343:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21400:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21343:58:0","trueExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21396:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21342:60:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"21333:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1123,"id":1145,"nodeType":"Return","src":"21326:76:0"}]}]},"documentation":{"id":1114,"nodeType":"StructuredDocumentation","src":"21020:143:0","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"21177:5:0","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"value","nameLocation":"21191:5:0","nodeType":"VariableDeclaration","scope":1148,"src":"21183:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1115,"name":"uint256","nodeType":"ElementaryTypeName","src":"21183:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"rounding","nameLocation":"21207:8:0","nodeType":"VariableDeclaration","scope":1148,"src":"21198:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1118,"nodeType":"UserDefinedTypeName","pathNode":{"id":1117,"name":"Rounding","nameLocations":["21198:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"21198:8:0"},"referencedDeclaration":250,"src":"21198:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"21182:34:0"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"21240:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"21240:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21239:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1235,"nodeType":"FunctionDefinition","src":"21676:663:0","nodes":[],"body":{"id":1234,"nodeType":"Block","src":"21739:600:0","nodes":[],"statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"result","nameLocation":"21757:6:0","nodeType":"VariableDeclaration","scope":1234,"src":"21749:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"21749:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1159,"initialValue":{"hexValue":"30","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21766:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21749:18:0"},{"id":1231,"nodeType":"UncheckedBlock","src":"21777:533:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21805:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21814:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21805:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21805:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1174,"nodeType":"IfStatement","src":"21801:98:0","trueBody":{"id":1173,"nodeType":"Block","src":"21823:76:0","statements":[{"expression":{"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21841:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21851:3:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21841:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1168,"nodeType":"ExpressionStatement","src":"21841:13:0"},{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21872:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"21872:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"21872:12:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21925:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21916:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21916:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1189,"nodeType":"IfStatement","src":"21912:95:0","trueBody":{"id":1188,"nodeType":"Block","src":"21933:74:0","statements":[{"expression":{"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"21951:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21961:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21951:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1183,"nodeType":"ExpressionStatement","src":"21951:12:0"},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"21981:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"21981:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"21981:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22024:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22038:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22024:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"22020:95:0","trueBody":{"id":1203,"nodeType":"Block","src":"22041:74:0","statements":[{"expression":{"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22059:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22069:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22059:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"22059:12:0"},{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22089:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22089:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"22089:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22132:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22132:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22146:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22132:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"22128:95:0","trueBody":{"id":1218,"nodeType":"Block","src":"22149:74:0","statements":[{"expression":{"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22167:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22177:2:0","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22167:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1213,"nodeType":"ExpressionStatement","src":"22167:12:0"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22197:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22207:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22197:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"22197:11:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"22240:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22249:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22240:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22253:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1230,"nodeType":"IfStatement","src":"22236:64:0","trueBody":{"id":1229,"nodeType":"Block","src":"22256:44:0","statements":[{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22274:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22284:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22274:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"22274:11:0"}]}}]},{"expression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"22326:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1233,"nodeType":"Return","src":"22319:13:0"}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"21425:246:0","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"21685:6:0","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"value","nameLocation":"21700:5:0","nodeType":"VariableDeclaration","scope":1235,"src":"21692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"21692:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21691:15:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"21730:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"21730:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21729:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1273,"nodeType":"FunctionDefinition","src":"22494:259:0","nodes":[],"body":{"id":1272,"nodeType":"Block","src":"22576:177:0","nodes":[],"statements":[{"id":1271,"nodeType":"UncheckedBlock","src":"22586:161:0","statements":[{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"result","nameLocation":"22618:6:0","nodeType":"VariableDeclaration","scope":1271,"src":"22610:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"22610:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1251,"initialValue":{"arguments":[{"id":1249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22634:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1248,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1235,1273],"referencedDeclaration":1235,"src":"22627:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22610:30:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22661:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1254,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"22688:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1253,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"22671:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$250_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22671:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22701:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"22707:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22717:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"22707:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22706:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"22722:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22701:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22671:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22671:64:0","trueExpression":{"hexValue":"31","id":1265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22670:66:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22661:75:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1245,"id":1270,"nodeType":"Return","src":"22654:82:0"}]}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"22345:144:0","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"22503:6:0","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"value","nameLocation":"22518:5:0","nodeType":"VariableDeclaration","scope":1273,"src":"22510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1237,"name":"uint256","nodeType":"ElementaryTypeName","src":"22510:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"rounding","nameLocation":"22534:8:0","nodeType":"VariableDeclaration","scope":1273,"src":"22525:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"Rounding","nameLocations":["22525:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22525:8:0"},"referencedDeclaration":250,"src":"22525:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22509:34:0"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1273,"src":"22567:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"22567:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22566:9:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1292,"nodeType":"FunctionDefinition","src":"22877:122:0","nodes":[],"body":{"id":1291,"nodeType":"Block","src":"22951:48:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1284,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"22974:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}],"id":1283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22968:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1282,"name":"uint8","nodeType":"ElementaryTypeName","src":"22968:5:0","typeDescriptions":{}}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22968:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22986:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22968:19:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22991:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22968:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1281,"id":1290,"nodeType":"Return","src":"22961:31:0"}]},"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"22759:113:0","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"22886:16:0","parameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"rounding","nameLocation":"22912:8:0","nodeType":"VariableDeclaration","scope":1292,"src":"22903:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"},"typeName":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"Rounding","nameLocations":["22903:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":250,"src":"22903:8:0"},"referencedDeclaration":250,"src":"22903:8:0","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$250","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"22902:19:0"},"returnParameters":{"id":1281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"22945:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"22945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22944:6:0"},"scope":1293,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"8013:73:0","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[1293],"name":"Math","nameLocation":"8095:4:0","scope":2845,"usedErrors":[245],"usedEvents":[]},{"id":1294,"nodeType":"PragmaDirective","src":"23125:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1543,"nodeType":"ContractDefinition","src":"23188:2847:0","nodes":[{"id":1298,"nodeType":"VariableDeclaration","src":"23210:56:0","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"23235:10:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1296,"name":"bytes16","nodeType":"ElementaryTypeName","src":"23210:7:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23248:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1301,"nodeType":"VariableDeclaration","src":"23272:42:0","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"23295:14:0","scope":1543,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1299,"name":"uint8","nodeType":"ElementaryTypeName","src":"23272:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23312:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1308,"nodeType":"ErrorDefinition","src":"23407:66:0","nodes":[],"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"23321:81:0","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"23413:28:0","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"value","nameLocation":"23450:5:0","nodeType":"VariableDeclaration","scope":1308,"src":"23442:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1303,"name":"uint256","nodeType":"ElementaryTypeName","src":"23442:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1306,"mutability":"mutable","name":"length","nameLocation":"23465:6:0","nodeType":"VariableDeclaration","scope":1308,"src":"23457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"23457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23441:31:0"}},{"id":1356,"nodeType":"FunctionDefinition","src":"23574:698:0","nodes":[],"body":{"id":1355,"nodeType":"Block","src":"23645:627:0","nodes":[],"statements":[{"id":1354,"nodeType":"UncheckedBlock","src":"23655:611:0","statements":[{"assignments":[1317],"declarations":[{"constant":false,"id":1317,"mutability":"mutable","name":"length","nameLocation":"23687:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23679:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"23707:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"23696:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23701:5:0","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1113,"src":"23696:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23696:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23716:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23696:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23679:38:0"},{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"buffer","nameLocation":"23745:6:0","nodeType":"VariableDeclaration","scope":1354,"src":"23731:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"23731:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1331,"initialValue":{"arguments":[{"id":1329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"23765:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23754:10:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1327,"name":"string","nodeType":"ElementaryTypeName","src":"23758:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23754:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"23731:41:0"},{"assignments":[1333],"declarations":[{"constant":false,"id":1333,"mutability":"mutable","name":"ptr","nameLocation":"23794:3:0","nodeType":"VariableDeclaration","scope":1354,"src":"23786:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"23786:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1334,"nodeType":"VariableDeclarationStatement","src":"23786:11:0"},{"AST":{"nativeSrc":"23867:67:0","nodeType":"YulBlock","src":"23867:67:0","statements":[{"nativeSrc":"23885:35:0","nodeType":"YulAssignment","src":"23885:35:0","value":{"arguments":[{"name":"buffer","nativeSrc":"23896:6:0","nodeType":"YulIdentifier","src":"23896:6:0"},{"arguments":[{"kind":"number","nativeSrc":"23908:2:0","nodeType":"YulLiteral","src":"23908:2:0","type":"","value":"32"},{"name":"length","nativeSrc":"23912:6:0","nodeType":"YulIdentifier","src":"23912:6:0"}],"functionName":{"name":"add","nativeSrc":"23904:3:0","nodeType":"YulIdentifier","src":"23904:3:0"},"nativeSrc":"23904:15:0","nodeType":"YulFunctionCall","src":"23904:15:0"}],"functionName":{"name":"add","nativeSrc":"23892:3:0","nodeType":"YulIdentifier","src":"23892:3:0"},"nativeSrc":"23892:28:0","nodeType":"YulFunctionCall","src":"23892:28:0"},"variableNames":[{"name":"ptr","nativeSrc":"23885:3:0","nodeType":"YulIdentifier","src":"23885:3:0"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1326,"isOffset":false,"isSlot":false,"src":"23896:6:0","valueSize":1},{"declaration":1317,"isOffset":false,"isSlot":false,"src":"23912:6:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"23885:3:0","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"23858:76:0"},{"body":{"id":1350,"nodeType":"Block","src":"23960:269:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"23978:5:0","subExpression":{"id":1337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"23978:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1339,"nodeType":"ExpressionStatement","src":"23978:5:0"},{"AST":{"nativeSrc":"24061:86:0","nodeType":"YulBlock","src":"24061:86:0","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"24091:3:0","nodeType":"YulIdentifier","src":"24091:3:0"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24105:5:0","nodeType":"YulIdentifier","src":"24105:5:0"},{"kind":"number","nativeSrc":"24112:2:0","nodeType":"YulLiteral","src":"24112:2:0","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"24101:3:0","nodeType":"YulIdentifier","src":"24101:3:0"},"nativeSrc":"24101:14:0","nodeType":"YulFunctionCall","src":"24101:14:0"},{"name":"HEX_DIGITS","nativeSrc":"24117:10:0","nodeType":"YulIdentifier","src":"24117:10:0"}],"functionName":{"name":"byte","nativeSrc":"24096:4:0","nodeType":"YulIdentifier","src":"24096:4:0"},"nativeSrc":"24096:32:0","nodeType":"YulFunctionCall","src":"24096:32:0"}],"functionName":{"name":"mstore8","nativeSrc":"24083:7:0","nodeType":"YulIdentifier","src":"24083:7:0"},"nativeSrc":"24083:46:0","nodeType":"YulFunctionCall","src":"24083:46:0"},"nativeSrc":"24083:46:0","nodeType":"YulExpressionStatement","src":"24083:46:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1298,"isOffset":false,"isSlot":false,"src":"24117:10:0","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"24091:3:0","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"24105:5:0","valueSize":1}],"id":1340,"nodeType":"InlineAssembly","src":"24052:95:0"},{"expression":{"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24164:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"24164:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1344,"nodeType":"ExpressionStatement","src":"24164:11:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"24197:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24206:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24197:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1349,"nodeType":"IfStatement","src":"24193:21:0","trueBody":{"id":1348,"nodeType":"Break","src":"24209:5:0"}}]},"condition":{"hexValue":"74727565","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23954:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1351,"nodeType":"WhileStatement","src":"23947:282:0"},{"expression":{"id":1352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"24249:6:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1315,"id":1353,"nodeType":"Return","src":"24242:13:0"}]}]},"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"23479:90:0","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"23583:8:0","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"value","nameLocation":"23600:5:0","nodeType":"VariableDeclaration","scope":1356,"src":"23592:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23591:15:0"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1356,"src":"23630:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1313,"name":"string","nodeType":"ElementaryTypeName","src":"23630:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23629:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1382,"nodeType":"FunctionDefinition","src":"24372:168:0","nodes":[],"body":{"id":1381,"nodeType":"Block","src":"24448:92:0","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24479:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24487:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24479:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24497:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24479:20:0","trueExpression":{"hexValue":"2d","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24491:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"24525:5:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1374,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"24510:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$240_$","typeString":"type(library SignedMath)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24521:3:0","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":239,"src":"24510:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24510:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1373,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"24501:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24465:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1364,"name":"string","nodeType":"ElementaryTypeName","src":"24465:6:0","typeDescriptions":{}}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24472:6:0","memberName":"concat","nodeType":"MemberAccess","src":"24465:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24465:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1363,"id":1380,"nodeType":"Return","src":"24458:75:0"}]},"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"24278:89:0","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"24381:14:0","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1359,"mutability":"mutable","name":"value","nameLocation":"24403:5:0","nodeType":"VariableDeclaration","scope":1382,"src":"24396:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1358,"name":"int256","nodeType":"ElementaryTypeName","src":"24396:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24395:14:0"},"returnParameters":{"id":1363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1382,"src":"24433:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1361,"name":"string","nodeType":"ElementaryTypeName","src":"24433:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24432:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1402,"nodeType":"FunctionDefinition","src":"24645:174:0","nodes":[],"body":{"id":1401,"nodeType":"Block","src":"24719:100:0","nodes":[],"statements":[{"id":1400,"nodeType":"UncheckedBlock","src":"24729:84:0","statements":[{"expression":{"arguments":[{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24772:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"24791:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1392,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"24779:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1293_$","typeString":"type(library Math)"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24784:6:0","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"24779:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24779:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24800:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24779:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1390,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"24760:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1389,"id":1399,"nodeType":"Return","src":"24753:49:0"}]}]},"documentation":{"id":1383,"nodeType":"StructuredDocumentation","src":"24546:94:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24654:11:0","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"value","nameLocation":"24674:5:0","nodeType":"VariableDeclaration","scope":1402,"src":"24666:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"24666:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24665:15:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1402,"src":"24704:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1387,"name":"string","nodeType":"ElementaryTypeName","src":"24704:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"24703:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1485,"nodeType":"FunctionDefinition","src":"24942:525:0","nodes":[],"body":{"id":1484,"nodeType":"Block","src":"25032:435:0","nodes":[],"statements":[{"assignments":[1413],"declarations":[{"constant":false,"id":1413,"mutability":"mutable","name":"localValue","nameLocation":"25050:10:0","nodeType":"VariableDeclaration","scope":1484,"src":"25042:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint256","nodeType":"ElementaryTypeName","src":"25042:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1415,"initialValue":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25063:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25042:26:0"},{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"buffer","nameLocation":"25091:6:0","nodeType":"VariableDeclaration","scope":1484,"src":"25078:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1416,"name":"bytes","nodeType":"ElementaryTypeName","src":"25078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1426,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25110:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1421,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25114:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25110:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25123:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25110:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"25100:9:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1418,"name":"bytes","nodeType":"ElementaryTypeName","src":"25104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25100:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"25078:47:0"},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1427,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25135:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1429,"indexExpression":{"hexValue":"30","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25142:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25135:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25147:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"25135:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1432,"nodeType":"ExpressionStatement","src":"25135:15:0"},{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1433,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25160:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1435,"indexExpression":{"hexValue":"31","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25167:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25160:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25172:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"25160:15:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1438,"nodeType":"ExpressionStatement","src":"25160:15:0"},{"body":{"id":1467,"nodeType":"Block","src":"25230:95:0","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1453,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25244:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1455,"indexExpression":{"id":1454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25251:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25244:9:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1456,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"25256:10:0","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1460,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1457,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25267:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25280:3:0","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"25267:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25256:28:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"25244:40:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1462,"nodeType":"ExpressionStatement","src":"25244:40:0"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1463,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25298:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25313:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25298:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"25298:16:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25218:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25222:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25218:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1468,"initializationExpression":{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"i","nameLocation":"25198:1:0","nodeType":"VariableDeclaration","scope":1468,"src":"25190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"25190:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1446,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25206:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25202:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25215:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25202:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25190:26:0"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"25225:3:0","subExpression":{"id":1450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"25227:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"25225:3:0"},"nodeType":"ForStatement","src":"25185:140:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"25338:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25352:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25338:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1478,"nodeType":"IfStatement","src":"25334:96:0","trueBody":{"id":1477,"nodeType":"Block","src":"25355:75:0","statements":[{"errorCall":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1405,"src":"25405:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1474,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"25412:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"25376:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25376:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1476,"nodeType":"RevertStatement","src":"25369:50:0"}]}},{"expression":{"arguments":[{"id":1481,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"25453:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25446:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1479,"name":"string","nodeType":"ElementaryTypeName","src":"25446:6:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25446:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1411,"id":1483,"nodeType":"Return","src":"25439:21:0"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"24825:112:0","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"24951:11:0","parameters":{"id":1408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1405,"mutability":"mutable","name":"value","nameLocation":"24971:5:0","nodeType":"VariableDeclaration","scope":1485,"src":"24963:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"24963:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1407,"mutability":"mutable","name":"length","nameLocation":"24986:6:0","nodeType":"VariableDeclaration","scope":1485,"src":"24978:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"24978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24962:31:0"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"25017:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1409,"name":"string","nodeType":"ElementaryTypeName","src":"25017:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25016:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1505,"nodeType":"FunctionDefinition","src":"25626:148:0","nodes":[],"body":{"id":1504,"nodeType":"Block","src":"25699:75:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1498,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"25744:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25736:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1496,"name":"uint160","nodeType":"ElementaryTypeName","src":"25736:7:0","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25736:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:0","typeDescriptions":{}}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25728:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1501,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"25752:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1493,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1402,1485,1505],"referencedDeclaration":1485,"src":"25716:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25716:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1492,"id":1503,"nodeType":"Return","src":"25709:58:0"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"25473:148:0","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"25635:11:0","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"addr","nameLocation":"25655:4:0","nodeType":"VariableDeclaration","scope":1505,"src":"25647:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"25647:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25646:14:0"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1505,"src":"25684:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1490,"name":"string","nodeType":"ElementaryTypeName","src":"25684:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25683:15:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1542,"nodeType":"FunctionDefinition","src":"25851:182:0","nodes":[],"body":{"id":1541,"nodeType":"Block","src":"25929:104:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"25952:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25946:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1515,"name":"bytes","nodeType":"ElementaryTypeName","src":"25946:5:0","typeDescriptions":{}}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25946:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25955:6:0","memberName":"length","nodeType":"MemberAccess","src":"25946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"25971:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25965:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"25965:5:0","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25974:6:0","memberName":"length","nodeType":"MemberAccess","src":"25965:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25946:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"26000:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25994:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1527,"name":"bytes","nodeType":"ElementaryTypeName","src":"25994:5:0","typeDescriptions":{}}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25994:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"25984:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1535,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"26023:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26017:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1533,"name":"bytes","nodeType":"ElementaryTypeName","src":"26017:5:0","typeDescriptions":{}}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26017:8:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1532,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26007:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26007:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25984:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25946:80:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1514,"id":1540,"nodeType":"Return","src":"25939:87:0"}]},"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"25780:66:0","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"25860:5:0","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"a","nameLocation":"25880:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25866:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1507,"name":"string","nodeType":"ElementaryTypeName","src":"25866:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"b","nameLocation":"25897:1:0","nodeType":"VariableDeclaration","scope":1542,"src":"25883:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1509,"name":"string","nodeType":"ElementaryTypeName","src":"25883:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"25865:34:0"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1542,"src":"25923:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"25923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25922:6:0"},"scope":1543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"23153:34:0","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1543],"name":"Strings","nameLocation":"23196:7:0","scope":2845,"usedErrors":[1308],"usedEvents":[]},{"id":1544,"nodeType":"PragmaDirective","src":"26159:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1572,"nodeType":"ContractDefinition","src":"26682:338:0","nodes":[{"id":1554,"nodeType":"FunctionDefinition","src":"26714:96:0","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"26776:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":1550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26793:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26797:6:0","memberName":"sender","nodeType":"MemberAccess","src":"26793:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1549,"id":1552,"nodeType":"Return","src":"26786:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"26723:10:0","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"26733:2:0"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"26767:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"26767:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26766:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1563,"nodeType":"FunctionDefinition","src":"26816:99:0","nodes":[],"body":{"id":1562,"nodeType":"Block","src":"26883:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":1559,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26900:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:4:0","memberName":"data","nodeType":"MemberAccess","src":"26900:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1558,"id":1561,"nodeType":"Return","src":"26893:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"26825:8:0","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"26833:2:0"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1563,"src":"26867:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"26867:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26866:16:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1571,"nodeType":"FunctionDefinition","src":"26921:97:0","nodes":[],"body":{"id":1570,"nodeType":"Block","src":"26993:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27010:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"27003:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"26930:20:0","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"26950:2:0"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"26984:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1565,"name":"uint256","nodeType":"ElementaryTypeName","src":"26984:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26983:9:0"},"scope":1572,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1545,"nodeType":"StructuredDocumentation","src":"26185:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[1572],"name":"Context","nameLocation":"26700:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1573,"nodeType":"PragmaDirective","src":"27174:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1589,"nodeType":"ContractDefinition","src":"27353:699:0","nodes":[{"id":1588,"nodeType":"FunctionDefinition","src":"27890:160:0","nodes":[],"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"27385:500:0","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"27899:16:0","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1577,"mutability":"mutable","name":"operator","nameLocation":"27933:8:0","nodeType":"VariableDeclaration","scope":1588,"src":"27925:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"27925:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"from","nameLocation":"27959:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27951:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"27951:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"tokenId","nameLocation":"27981:7:0","nodeType":"VariableDeclaration","scope":1588,"src":"27973:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"27973:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"data","nameLocation":"28013:4:0","nodeType":"VariableDeclaration","scope":1588,"src":"27998:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"27998:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27915:108:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1588,"src":"28042:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28042:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28041:8:0"},"scope":1589,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"27200:152:0","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"linearizedBaseContracts":[1589],"name":"IERC721Receiver","nameLocation":"27363:15:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1590,"nodeType":"PragmaDirective","src":"28204:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1600,"nodeType":"ContractDefinition","src":"28510:447:0","nodes":[{"id":1599,"nodeType":"FunctionDefinition","src":"28879:76:0","nodes":[],"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"28534:340:0","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"28888:17:0","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"mutability":"mutable","name":"interfaceId","nameLocation":"28913:11:0","nodeType":"VariableDeclaration","scope":1599,"src":"28906:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1593,"name":"bytes4","nodeType":"ElementaryTypeName","src":"28906:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"28905:20:0"},"returnParameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"28949:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1596,"name":"bool","nodeType":"ElementaryTypeName","src":"28949:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28948:6:0"},"scope":1600,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"28230:279:0","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[1600],"name":"IERC165","nameLocation":"28520:7:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1601,"nodeType":"PragmaDirective","src":"29107:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1621,"nodeType":"ContractDefinition","src":"29613:251:0","nodes":[{"id":1620,"nodeType":"FunctionDefinition","src":"29716:146:0","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"29798:64:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1612,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"29815:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1614,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"29835:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1600_$","typeString":"type(contract IERC165)"}],"id":1613,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"29830:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29830:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1600","typeString":"type(contract IERC165)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29844:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"29830:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"29815:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1611,"id":1618,"nodeType":"Return","src":"29808:47:0"}]},"baseFunctions":[1599],"documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"29655:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"29725:17:0","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"interfaceId","nameLocation":"29750:11:0","nodeType":"VariableDeclaration","scope":1620,"src":"29743:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1606,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29743:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29742:20:0"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1620,"src":"29792:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1609,"name":"bool","nodeType":"ElementaryTypeName","src":"29792:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29791:6:0"},"scope":1621,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1603,"name":"IERC165","nameLocations":["29641:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"29641:7:0"},"id":1604,"nodeType":"InheritanceSpecifier","src":"29641:7:0"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"29134:478:0","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1621,1600],"name":"ERC165","nameLocation":"29631:6:0","scope":2845,"usedErrors":[],"usedEvents":[]},{"id":1622,"nodeType":"PragmaDirective","src":"30002:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1735,"nodeType":"ContractDefinition","src":"30097:4659:0","nodes":[{"id":1634,"nodeType":"EventDefinition","src":"30225:82:0","nodes":[],"anonymous":false,"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"30132:88:0","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"30231:8:0","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"30256:4:0","nodeType":"VariableDeclaration","scope":1634,"src":"30240:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"30240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1630,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"30278:2:0","nodeType":"VariableDeclaration","scope":1634,"src":"30262:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"30262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30298:7:0","nodeType":"VariableDeclaration","scope":1634,"src":"30282:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"30282:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30239:67:0"}},{"id":1643,"nodeType":"EventDefinition","src":"30412:89:0","nodes":[],"anonymous":false,"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"30313:94:0","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"30418:8:0","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30443:5:0","nodeType":"VariableDeclaration","scope":1643,"src":"30427:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"30427:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"30466:8:0","nodeType":"VariableDeclaration","scope":1643,"src":"30450:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"30450:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"30492:7:0","nodeType":"VariableDeclaration","scope":1643,"src":"30476:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30426:74:0"}},{"id":1652,"nodeType":"EventDefinition","src":"30629:85:0","nodes":[],"anonymous":false,"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"30507:117:0","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","name":"ApprovalForAll","nameLocation":"30635:14:0","parameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"30666:5:0","nodeType":"VariableDeclaration","scope":1652,"src":"30650:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"30689:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30673:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1647,"name":"address","nodeType":"ElementaryTypeName","src":"30673:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1650,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"30704:8:0","nodeType":"VariableDeclaration","scope":1652,"src":"30699:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1649,"name":"bool","nodeType":"ElementaryTypeName","src":"30699:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30649:64:0"}},{"id":1660,"nodeType":"FunctionDefinition","src":"30801:74:0","nodes":[],"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"30720:76:0","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"30810:9:0","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"owner","nameLocation":"30828:5:0","nodeType":"VariableDeclaration","scope":1660,"src":"30820:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1654,"name":"address","nodeType":"ElementaryTypeName","src":"30820:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30819:15:0"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"balance","nameLocation":"30866:7:0","nodeType":"VariableDeclaration","scope":1660,"src":"30858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1657,"name":"uint256","nodeType":"ElementaryTypeName","src":"30858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30857:17:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1668,"nodeType":"FunctionDefinition","src":"31017:72:0","nodes":[],"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"30881:131:0","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"31026:7:0","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"tokenId","nameLocation":"31042:7:0","nodeType":"VariableDeclaration","scope":1668,"src":"31034:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"31034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31033:17:0"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"owner","nameLocation":"31082:5:0","nodeType":"VariableDeclaration","scope":1668,"src":"31074:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"31074:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31073:15:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1680,"nodeType":"FunctionDefinition","src":"31665:99:0","nodes":[],"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"31095:565:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"31674:16:0","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"from","nameLocation":"31699:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31691:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"31691:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"to","nameLocation":"31713:2:0","nodeType":"VariableDeclaration","scope":1680,"src":"31705:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"31705:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"tokenId","nameLocation":"31725:7:0","nodeType":"VariableDeclaration","scope":1680,"src":"31717:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"31717:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"data","nameLocation":"31749:4:0","nodeType":"VariableDeclaration","scope":1680,"src":"31734:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1676,"name":"bytes","nodeType":"ElementaryTypeName","src":"31734:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31690:64:0"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"31763:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1690,"nodeType":"FunctionDefinition","src":"32480:78:0","nodes":[],"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"31770:705:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"32489:16:0","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"32514:4:0","nodeType":"VariableDeclaration","scope":1690,"src":"32506:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"32506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"32528:2:0","nodeType":"VariableDeclaration","scope":1690,"src":"32520:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"32520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"32540:7:0","nodeType":"VariableDeclaration","scope":1690,"src":"32532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32505:43:0"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"32557:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1700,"nodeType":"FunctionDefinition","src":"33301:74:0","nodes":[],"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"32564:732:0","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"33310:12:0","parameters":{"id":1698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"from","nameLocation":"33331:4:0","nodeType":"VariableDeclaration","scope":1700,"src":"33323:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"33323:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"to","nameLocation":"33345:2:0","nodeType":"VariableDeclaration","scope":1700,"src":"33337:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"33337:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1697,"mutability":"mutable","name":"tokenId","nameLocation":"33357:7:0","nodeType":"VariableDeclaration","scope":1700,"src":"33349:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1696,"name":"uint256","nodeType":"ElementaryTypeName","src":"33349:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33322:43:0"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"33374:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1708,"nodeType":"FunctionDefinition","src":"33838:55:0","nodes":[],"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"33381:452:0","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"33847:7:0","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"33863:2:0","nodeType":"VariableDeclaration","scope":1708,"src":"33855:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"33855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"tokenId","nameLocation":"33875:7:0","nodeType":"VariableDeclaration","scope":1708,"src":"33867:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"33867:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33854:29:0"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[],"src":"33892:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1716,"nodeType":"FunctionDefinition","src":"34219:69:0","nodes":[],"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"33899:315:0","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"34228:17:0","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"mutability":"mutable","name":"operator","nameLocation":"34254:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34246:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"34246:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"approved","nameLocation":"34269:8:0","nodeType":"VariableDeclaration","scope":1716,"src":"34264:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"34264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34245:33:0"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"34287:0:0"},"scope":1735,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1724,"nodeType":"FunctionDefinition","src":"34438:79:0","nodes":[],"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"34294:139:0","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"34447:11:0","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"tokenId","nameLocation":"34467:7:0","nodeType":"VariableDeclaration","scope":1724,"src":"34459:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"34459:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34458:17:0"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"operator","nameLocation":"34507:8:0","nodeType":"VariableDeclaration","scope":1724,"src":"34499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1721,"name":"address","nodeType":"ElementaryTypeName","src":"34499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34498:18:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1734,"nodeType":"FunctionDefinition","src":"34666:88:0","nodes":[],"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"34523:138:0","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"34675:16:0","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"owner","nameLocation":"34700:5:0","nodeType":"VariableDeclaration","scope":1734,"src":"34692:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"34692:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"operator","nameLocation":"34715:8:0","nodeType":"VariableDeclaration","scope":1734,"src":"34707:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"34707:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34691:33:0"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"34748:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"34748:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34747:6:0"},"scope":1735,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1624,"name":"IERC165","nameLocations":["30118:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"30118:7:0"},"id":1625,"nodeType":"InheritanceSpecifier","src":"30118:7:0"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"30029:67:0","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"linearizedBaseContracts":[1735,1600],"name":"IERC721","nameLocation":"30107:7:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1736,"nodeType":"PragmaDirective","src":"34932:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1760,"nodeType":"ContractDefinition","src":"35093:463:0","nodes":[{"id":1745,"nodeType":"FunctionDefinition","src":"35199:54:0","nodes":[],"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"35136:58:0","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"35208:4:0","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"35212:2:0"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1745,"src":"35238:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1742,"name":"string","nodeType":"ElementaryTypeName","src":"35238:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35237:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1751,"nodeType":"FunctionDefinition","src":"35324:56:0","nodes":[],"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"35259:60:0","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"35333:6:0","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[],"src":"35339:2:0"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1751,"src":"35365:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1748,"name":"string","nodeType":"ElementaryTypeName","src":"35365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35364:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1759,"nodeType":"FunctionDefinition","src":"35481:73:0","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"35386:90:0","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"35490:8:0","parameters":{"id":1755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"tokenId","nameLocation":"35507:7:0","nodeType":"VariableDeclaration","scope":1759,"src":"35499:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1753,"name":"uint256","nodeType":"ElementaryTypeName","src":"35499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35498:17:0"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1759,"src":"35539:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1756,"name":"string","nodeType":"ElementaryTypeName","src":"35539:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"35538:15:0"},"scope":1760,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1738,"name":"IERC721","nameLocations":["35122:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"35122:7:0"},"id":1739,"nodeType":"InheritanceSpecifier","src":"35122:7:0"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"34959:133:0","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"linearizedBaseContracts":[1760,1735,1600],"name":"IERC721Metadata","nameLocation":"35103:15:0","scope":2845,"usedErrors":[],"usedEvents":[1634,1643,1652]},{"id":1761,"nodeType":"PragmaDirective","src":"35692:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2753,"nodeType":"ContractDefinition","src":"35972:16926:0","nodes":[{"id":1775,"nodeType":"UsingForDirective","src":"36063:26:0","nodes":[],"global":false,"libraryName":{"id":1773,"name":"Strings","nameLocations":["36069:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1543,"src":"36069:7:0"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"36081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":1777,"nodeType":"VariableDeclaration","src":"36113:20:0","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"36128:5:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1776,"name":"string","nodeType":"ElementaryTypeName","src":"36113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1779,"nodeType":"VariableDeclaration","src":"36160:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"36175:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1778,"name":"string","nodeType":"ElementaryTypeName","src":"36160:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":1783,"nodeType":"VariableDeclaration","src":"36189:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"36233:7:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1782,"keyName":"tokenId","keyNameLocation":"36205:7:0","keyType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"36197:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36189:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"36216:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1787,"nodeType":"VariableDeclaration","src":"36247:51:0","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"36289:9:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1786,"keyName":"owner","keyNameLocation":"36263:5:0","keyType":{"id":1784,"name":"address","nodeType":"ElementaryTypeName","src":"36255:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36247:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"36272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":1791,"nodeType":"VariableDeclaration","src":"36305:59:0","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"36349:15:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":1790,"keyName":"tokenId","keyNameLocation":"36321:7:0","keyType":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"36313:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"36305:35:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1789,"name":"address","nodeType":"ElementaryTypeName","src":"36332:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":1797,"nodeType":"VariableDeclaration","src":"36371:86:0","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"36439:18:0","scope":2753,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1796,"keyName":"owner","keyNameLocation":"36387:5:0","keyType":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"36379:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36371:59:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1795,"keyName":"operator","keyNameLocation":"36412:8:0","keyType":{"id":1793,"name":"address","nodeType":"ElementaryTypeName","src":"36404:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"36396:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1794,"name":"bool","nodeType":"ElementaryTypeName","src":"36424:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":1814,"nodeType":"FunctionDefinition","src":"36577:113:0","nodes":[],"body":{"id":1813,"nodeType":"Block","src":"36633:57:0","nodes":[],"statements":[{"expression":{"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"36643:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1806,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"36651:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36643:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1808,"nodeType":"ExpressionStatement","src":"36643:13:0"},{"expression":{"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1809,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"36666:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1810,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"36676:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"36666:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1812,"nodeType":"ExpressionStatement","src":"36666:17:0"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"36464:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"name_","nameLocation":"36603:5:0","nodeType":"VariableDeclaration","scope":1814,"src":"36589:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1799,"name":"string","nodeType":"ElementaryTypeName","src":"36589:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"symbol_","nameLocation":"36624:7:0","nodeType":"VariableDeclaration","scope":1814,"src":"36610:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1801,"name":"string","nodeType":"ElementaryTypeName","src":"36610:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"36588:44:0"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[],"src":"36633:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1845,"nodeType":"FunctionDefinition","src":"36757:300:0","nodes":[],"body":{"id":1844,"nodeType":"Block","src":"36865:192:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1825,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36894:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1827,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"36914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1735_$","typeString":"type(contract IERC721)"}],"id":1826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36909:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36909:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1735","typeString":"type(contract IERC721)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36923:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36909:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36894:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"36950:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1833,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"36970:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1760_$","typeString":"type(contract IERC721Metadata)"}],"id":1832,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"36965:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36965:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1760","typeString":"type(contract IERC721Metadata)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36987:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"36965:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"36950:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1840,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"37038:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"37014:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2753_$","typeString":"type(contract super ERC721)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37020:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"37014:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37014:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36894:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1824,"id":1843,"nodeType":"Return","src":"36875:175:0"}]},"baseFunctions":[1599,1620],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"36696:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"36766:17:0","overrides":{"id":1821,"nodeType":"OverrideSpecifier","overrides":[{"id":1819,"name":"ERC165","nameLocations":["36833:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36833:6:0"},{"id":1820,"name":"IERC165","nameLocations":["36841:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"36841:7:0"}],"src":"36824:25:0"},"parameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"interfaceId","nameLocation":"36791:11:0","nodeType":"VariableDeclaration","scope":1845,"src":"36784:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"36784:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"36783:20:0"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"36859:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1822,"name":"bool","nodeType":"ElementaryTypeName","src":"36859:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36858:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1873,"nodeType":"FunctionDefinition","src":"37116:208:0","nodes":[],"body":{"id":1872,"nodeType":"Block","src":"37188:136:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1853,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37202:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37219:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37211:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"37211:7:0","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37211:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37202:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1867,"nodeType":"IfStatement","src":"37198:87:0","trueBody":{"id":1866,"nodeType":"Block","src":"37223:62:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37271:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37263:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1860,"name":"address","nodeType":"ElementaryTypeName","src":"37263:7:0","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37263:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1859,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"37244:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37244:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"RevertStatement","src":"37237:37:0"}]}},{"expression":{"baseExpression":{"id":1868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"37301:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1870,"indexExpression":{"id":1869,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"37311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37301:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1852,"id":1871,"nodeType":"Return","src":"37294:23:0"}]},"baseFunctions":[1660],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"37063:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"37125:9:0","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"37143:5:0","nodeType":"VariableDeclaration","scope":1873,"src":"37135:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"37135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37134:15:0"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1873,"src":"37179:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"37179:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37178:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1886,"nodeType":"FunctionDefinition","src":"37381:118:0","nodes":[],"body":{"id":1885,"nodeType":"Block","src":"37453:46:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"37484:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1881,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37470:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37470:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1880,"id":1884,"nodeType":"Return","src":"37463:29:0"}]},"baseFunctions":[1668],"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"37330:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"37390:7:0","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"tokenId","nameLocation":"37406:7:0","nodeType":"VariableDeclaration","scope":1886,"src":"37398:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"37398:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37397:17:0"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1886,"src":"37444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1878,"name":"address","nodeType":"ElementaryTypeName","src":"37444:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37443:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1895,"nodeType":"FunctionDefinition","src":"37561:89:0","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"37621:29:0","nodes":[],"statements":[{"expression":{"id":1892,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1777,"src":"37638:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1891,"id":1893,"nodeType":"Return","src":"37631:12:0"}]},"baseFunctions":[1745],"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"37505:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"37570:4:0","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"37574:2:0"},"returnParameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1895,"src":"37606:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1889,"name":"string","nodeType":"ElementaryTypeName","src":"37606:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37605:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1904,"nodeType":"FunctionDefinition","src":"37714:93:0","nodes":[],"body":{"id":1903,"nodeType":"Block","src":"37776:31:0","nodes":[],"statements":[{"expression":{"id":1901,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"37793:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1900,"id":1902,"nodeType":"Return","src":"37786:14:0"}]},"baseFunctions":[1751],"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"37656:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"37723:6:0","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"37729:2:0"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1904,"src":"37761:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1898,"name":"string","nodeType":"ElementaryTypeName","src":"37761:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37760:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1940,"nodeType":"FunctionDefinition","src":"37873:255:0","nodes":[],"body":{"id":1939,"nodeType":"Block","src":"37952:176:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1913,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"37976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1912,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"37962:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37962:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1915,"nodeType":"ExpressionStatement","src":"37962:22:0"},{"assignments":[1917],"declarations":[{"constant":false,"id":1917,"mutability":"mutable","name":"baseURI","nameLocation":"38009:7:0","nodeType":"VariableDeclaration","scope":1939,"src":"37995:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"37995:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1918,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"38019:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38019:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"37995:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1923,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38052:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38046:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"38046:5:0","typeDescriptions":{}}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38046:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:6:0","memberName":"length","nodeType":"MemberAccess","src":"38046:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38070:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"38046:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38119:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"38046:75:0","trueExpression":{"arguments":[{"id":1931,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"38088:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"38097:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38105:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"38097:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38097:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38074:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"38074:6:0","typeDescriptions":{}}},"id":1930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:6:0","memberName":"concat","nodeType":"MemberAccess","src":"38074:13:0","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38074:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1911,"id":1938,"nodeType":"Return","src":"38039:82:0"}]},"baseFunctions":[1759],"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"37813:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"37882:8:0","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"tokenId","nameLocation":"37899:7:0","nodeType":"VariableDeclaration","scope":1940,"src":"37891:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"37891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37890:17:0"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1940,"src":"37937:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1909,"name":"string","nodeType":"ElementaryTypeName","src":"37937:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"37936:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1949,"nodeType":"FunctionDefinition","src":"38370:92:0","nodes":[],"body":{"id":1948,"nodeType":"Block","src":"38436:26:0","nodes":[],"statements":[{"expression":{"hexValue":"","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"38453:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1945,"id":1947,"nodeType":"Return","src":"38446:9:0"}]},"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"38134:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"38379:8:0","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"38387:2:0"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"38421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1943,"name":"string","nodeType":"ElementaryTypeName","src":"38421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"38420:15:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1965,"nodeType":"FunctionDefinition","src":"38519:113:0","nodes":[],"body":{"id":1964,"nodeType":"Block","src":"38580:52:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1958,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"38599:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1959,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"38603:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1960,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"38612:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38612:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1957,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2556,"src":"38590:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38590:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"ExpressionStatement","src":"38590:35:0"}]},"baseFunctions":[1708],"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"38468:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"38528:7:0","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"to","nameLocation":"38544:2:0","nodeType":"VariableDeclaration","scope":1965,"src":"38536:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"38536:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1954,"mutability":"mutable","name":"tokenId","nameLocation":"38556:7:0","nodeType":"VariableDeclaration","scope":1965,"src":"38548:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"38548:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38535:29:0"},"returnParameters":{"id":1956,"nodeType":"ParameterList","parameters":[],"src":"38580:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1982,"nodeType":"FunctionDefinition","src":"38693:154:0","nodes":[],"body":{"id":1981,"nodeType":"Block","src":"38769:78:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":1974,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1973,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"38779:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38779:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"nodeType":"ExpressionStatement","src":"38779:22:0"},{"expression":{"arguments":[{"id":1978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"38832:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1977,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"38819:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38819:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1972,"id":1980,"nodeType":"Return","src":"38812:28:0"}]},"baseFunctions":[1724],"documentation":{"id":1966,"nodeType":"StructuredDocumentation","src":"38638:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"38702:11:0","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"tokenId","nameLocation":"38722:7:0","nodeType":"VariableDeclaration","scope":1982,"src":"38714:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"38714:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38713:17:0"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"38760:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"38760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"38759:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1998,"nodeType":"FunctionDefinition","src":"38914:144:0","nodes":[],"body":{"id":1997,"nodeType":"Block","src":"38989:69:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39018:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39018:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1993,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"39032:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1994,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"39042:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1990,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"38999:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38999:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1996,"nodeType":"ExpressionStatement","src":"38999:52:0"}]},"baseFunctions":[1716],"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"38853:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"38923:17:0","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"operator","nameLocation":"38949:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38941:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1984,"name":"address","nodeType":"ElementaryTypeName","src":"38941:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1987,"mutability":"mutable","name":"approved","nameLocation":"38964:8:0","nodeType":"VariableDeclaration","scope":1998,"src":"38959:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1986,"name":"bool","nodeType":"ElementaryTypeName","src":"38959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38940:33:0"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[],"src":"38989:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2015,"nodeType":"FunctionDefinition","src":"39124:153:0","nodes":[],"body":{"id":2014,"nodeType":"Block","src":"39218:59:0","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2008,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"39235:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2010,"indexExpression":{"id":2009,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"39254:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"39261:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39235:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2007,"id":2013,"nodeType":"Return","src":"39228:42:0"}]},"baseFunctions":[1734],"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"39064:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"39133:16:0","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"owner","nameLocation":"39158:5:0","nodeType":"VariableDeclaration","scope":2015,"src":"39150:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"39150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2003,"mutability":"mutable","name":"operator","nameLocation":"39173:8:0","nodeType":"VariableDeclaration","scope":2015,"src":"39165:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2002,"name":"address","nodeType":"ElementaryTypeName","src":"39165:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39149:33:0"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"39212:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2005,"name":"bool","nodeType":"ElementaryTypeName","src":"39212:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39211:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":2061,"nodeType":"FunctionDefinition","src":"39339:578:0","nodes":[],"body":{"id":2060,"nodeType":"Block","src":"39419:498:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39433:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39447:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39439:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"39439:7:0","typeDescriptions":{}}},"id":2029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39439:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39433:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"39429:87:0","trueBody":{"id":2038,"nodeType":"Block","src":"39451:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39502:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39494:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"39494:7:0","typeDescriptions":{}}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39494:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2031,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"39472:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2037,"nodeType":"RevertStatement","src":"39465:40:0"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"previousOwner","nameLocation":"39742:13:0","nodeType":"VariableDeclaration","scope":2060,"src":"39734:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"39734:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2048,"initialValue":{"arguments":[{"id":2043,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"39766:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2044,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2045,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"39779:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39779:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"39758:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39758:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39734:58:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2049,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39806:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39823:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"39806:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2059,"nodeType":"IfStatement","src":"39802:109:0","trueBody":{"id":2058,"nodeType":"Block","src":"39829:82:0","statements":[{"errorCall":{"arguments":[{"id":2053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"39871:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2054,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"39877:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2055,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"39886:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2052,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"39850:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39850:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2057,"nodeType":"RevertStatement","src":"39843:57:0"}]}}]},"baseFunctions":[1700],"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"39283:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"39348:12:0","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"from","nameLocation":"39369:4:0","nodeType":"VariableDeclaration","scope":2061,"src":"39361:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"39361:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"to","nameLocation":"39383:2:0","nodeType":"VariableDeclaration","scope":2061,"src":"39375:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2019,"name":"address","nodeType":"ElementaryTypeName","src":"39375:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"tokenId","nameLocation":"39395:7:0","nodeType":"VariableDeclaration","scope":2061,"src":"39387:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"39387:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39360:43:0"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[],"src":"39419:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2079,"nodeType":"FunctionDefinition","src":"39983:132:0","nodes":[],"body":{"id":2078,"nodeType":"Block","src":"40059:56:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2072,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"40086:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2073,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"40092:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2074,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"40096:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40105:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2071,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2079,2105],"referencedDeclaration":2105,"src":"40069:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40069:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"40069:39:0"}]},"baseFunctions":[1690],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"39923:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"39992:16:0","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"from","nameLocation":"40017:4:0","nodeType":"VariableDeclaration","scope":2079,"src":"40009:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"40009:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"to","nameLocation":"40031:2:0","nodeType":"VariableDeclaration","scope":2079,"src":"40023:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"tokenId","nameLocation":"40043:7:0","nodeType":"VariableDeclaration","scope":2079,"src":"40035:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"40035:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40008:43:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"40059:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2105,"nodeType":"FunctionDefinition","src":"40181:208:0","nodes":[],"body":{"id":2104,"nodeType":"Block","src":"40284:105:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2092,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40307:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40313:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2094,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40317:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"40294:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"ExpressionStatement","src":"40294:31:0"},{"expression":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2082,"src":"40358:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"40364:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"40368:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"40377:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2097,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"40335:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40335:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"40335:47:0"}]},"baseFunctions":[1680],"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"40121:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"40190:16:0","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"from","nameLocation":"40215:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40207:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2081,"name":"address","nodeType":"ElementaryTypeName","src":"40207:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2084,"mutability":"mutable","name":"to","nameLocation":"40229:2:0","nodeType":"VariableDeclaration","scope":2105,"src":"40221:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"40221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"tokenId","nameLocation":"40241:7:0","nodeType":"VariableDeclaration","scope":2105,"src":"40233:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"40233:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"data","nameLocation":"40263:4:0","nodeType":"VariableDeclaration","scope":2105,"src":"40250:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2087,"name":"bytes","nodeType":"ElementaryTypeName","src":"40250:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40206:62:0"},"returnParameters":{"id":2090,"nodeType":"ParameterList","parameters":[],"src":"40284:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":2118,"nodeType":"FunctionDefinition","src":"40903:115:0","nodes":[],"body":{"id":2117,"nodeType":"Block","src":"40978:40:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2113,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"40995:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2115,"indexExpression":{"id":2114,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"41003:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40995:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2112,"id":2116,"nodeType":"Return","src":"40988:23:0"}]},"documentation":{"id":2106,"nodeType":"StructuredDocumentation","src":"40395:503:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"40912:8:0","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"tokenId","nameLocation":"40929:7:0","nodeType":"VariableDeclaration","scope":2118,"src":"40921:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"40921:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40920:17:0"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2118,"src":"40969:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2110,"name":"address","nodeType":"ElementaryTypeName","src":"40969:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40968:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2131,"nodeType":"FunctionDefinition","src":"41134:127:0","nodes":[],"body":{"id":2130,"nodeType":"Block","src":"41213:48:0","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2126,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"41230:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2128,"indexExpression":{"id":2127,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"41246:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41230:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2125,"id":2129,"nodeType":"Return","src":"41223:31:0"}]},"documentation":{"id":2119,"nodeType":"StructuredDocumentation","src":"41024:105:0","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"41143:12:0","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"tokenId","nameLocation":"41164:7:0","nodeType":"VariableDeclaration","scope":2131,"src":"41156:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"41156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41155:17:0"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"41204:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2123,"name":"address","nodeType":"ElementaryTypeName","src":"41204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41203:9:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2167,"nodeType":"FunctionDefinition","src":"41572:272:0","nodes":[],"body":{"id":2166,"nodeType":"Block","src":"41681:163:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41710:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"41721:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2144,"name":"address","nodeType":"ElementaryTypeName","src":"41721:7:0","typeDescriptions":{}}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41721:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41710:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41748:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2150,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41757:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41748:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2153,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"41785:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2154,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41792:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2152,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"41768:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41768:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2158,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"41817:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"41804:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41804:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2160,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"41829:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"41804:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41748:88:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41747:90:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"41710:127:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2142,"id":2165,"nodeType":"Return","src":"41691:146:0"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"41267:300:0","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"41581:13:0","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"owner","nameLocation":"41603:5:0","nodeType":"VariableDeclaration","scope":2167,"src":"41595:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2133,"name":"address","nodeType":"ElementaryTypeName","src":"41595:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2136,"mutability":"mutable","name":"spender","nameLocation":"41618:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41610:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2135,"name":"address","nodeType":"ElementaryTypeName","src":"41610:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2138,"mutability":"mutable","name":"tokenId","nameLocation":"41635:7:0","nodeType":"VariableDeclaration","scope":2167,"src":"41627:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"41627:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"41594:49:0"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2167,"src":"41675:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2140,"name":"bool","nodeType":"ElementaryTypeName","src":"41675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41674:6:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2204,"nodeType":"FunctionDefinition","src":"42278:368:0","nodes":[],"body":{"id":2203,"nodeType":"Block","src":"42375:271:0","nodes":[],"statements":[{"condition":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42389:39:0","subExpression":{"arguments":[{"id":2178,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42404:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2179,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42411:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2180,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42420:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2177,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"42390:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42390:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"nodeType":"IfStatement","src":"42385:255:0","trueBody":{"id":2201,"nodeType":"Block","src":"42430:210:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2183,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"42448:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42465:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42457:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2184,"name":"address","nodeType":"ElementaryTypeName","src":"42457:7:0","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42457:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42448:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2199,"nodeType":"Block","src":"42546:84:0","statements":[{"errorCall":{"arguments":[{"id":2195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"42598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2194,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"42571:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42571:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"RevertStatement","src":"42564:51:0"}]},"id":2200,"nodeType":"IfStatement","src":"42444:186:0","trueBody":{"id":2193,"nodeType":"Block","src":"42469:71:0","statements":[{"errorCall":{"arguments":[{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"42517:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2189,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"42494:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42494:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2192,"nodeType":"RevertStatement","src":"42487:38:0"}]}}]}}]},"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"41850:423:0","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"42287:16:0","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"42312:5:0","nodeType":"VariableDeclaration","scope":2204,"src":"42304:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"42304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"spender","nameLocation":"42327:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42319:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"42319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2174,"mutability":"mutable","name":"tokenId","nameLocation":"42344:7:0","nodeType":"VariableDeclaration","scope":2204,"src":"42336:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"42336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42303:49:0"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"42375:0:0"},"scope":2753,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"43288:153:0","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"43363:78:0","nodes":[],"statements":[{"id":2218,"nodeType":"UncheckedBlock","src":"43373:62:0","statements":[{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2212,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"43397:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2214,"indexExpression":{"id":2213,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"43407:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43397:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"43419:5:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"43397:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"43397:27:0"}]}]},"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"42652:631:0","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"43297:16:0","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"account","nameLocation":"43322:7:0","nodeType":"VariableDeclaration","scope":2220,"src":"43314:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"43314:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"value","nameLocation":"43339:5:0","nodeType":"VariableDeclaration","scope":2220,"src":"43331:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":2208,"name":"uint128","nodeType":"ElementaryTypeName","src":"43331:7:0","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"43313:32:0"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[],"src":"43363:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2310,"nodeType":"FunctionDefinition","src":"44034:795:0","nodes":[],"body":{"id":2309,"nodeType":"Block","src":"44129:700:0","nodes":[],"statements":[{"assignments":[2233],"declarations":[{"constant":false,"id":2233,"mutability":"mutable","name":"from","nameLocation":"44147:4:0","nodeType":"VariableDeclaration","scope":2309,"src":"44139:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"44139:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2237,"initialValue":{"arguments":[{"id":2235,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44163:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2234,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"44154:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44154:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44139:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2238,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44231:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44239:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2239,"name":"address","nodeType":"ElementaryTypeName","src":"44239:7:0","typeDescriptions":{}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44239:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44231:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"nodeType":"IfStatement","src":"44227:86:0","trueBody":{"id":2250,"nodeType":"Block","src":"44251:62:0","statements":[{"expression":{"arguments":[{"id":2245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44282:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2246,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"44288:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44294:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"44265:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44265:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"44265:37:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44357:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"44365:7:0","typeDescriptions":{}}},"id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44357:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"44353:256:0","trueBody":{"id":2278,"nodeType":"Block","src":"44377:232:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44482:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2259,"name":"address","nodeType":"ElementaryTypeName","src":"44482:7:0","typeDescriptions":{}}},"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44482:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44511:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44503:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2264,"name":"address","nodeType":"ElementaryTypeName","src":"44503:7:0","typeDescriptions":{}}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44503:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44515:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2258,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"44473:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44473:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"44473:48:0"},{"id":2277,"nodeType":"UncheckedBlock","src":"44536:63:0","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2271,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44564:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2273,"indexExpression":{"id":2272,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44574:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44564:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44583:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44564:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"44564:20:0"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44623:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"44629:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2281,"name":"address","nodeType":"ElementaryTypeName","src":"44629:7:0","typeDescriptions":{}}},"id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44629:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44623:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2294,"nodeType":"IfStatement","src":"44619:107:0","trueBody":{"id":2293,"nodeType":"Block","src":"44641:85:0","statements":[{"id":2292,"nodeType":"UncheckedBlock","src":"44655:61:0","statements":[{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2286,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"44683:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2288,"indexExpression":{"id":2287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44693:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44683:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44683:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"44683:18:0"}]}]}},{"expression":{"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2295,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"44736:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2297,"indexExpression":{"id":2296,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44736:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44755:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"44736:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2300,"nodeType":"ExpressionStatement","src":"44736:21:0"},{"eventCall":{"arguments":[{"id":2302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44782:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"44788:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"44792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2301,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"44773:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44773:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2306,"nodeType":"EmitStatement","src":"44768:32:0"},{"expression":{"id":2307,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"44818:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2231,"id":2308,"nodeType":"Return","src":"44811:11:0"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"43447:582:0","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"44043:7:0","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"to","nameLocation":"44059:2:0","nodeType":"VariableDeclaration","scope":2310,"src":"44051:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2222,"name":"address","nodeType":"ElementaryTypeName","src":"44051:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"tokenId","nameLocation":"44071:7:0","nodeType":"VariableDeclaration","scope":2310,"src":"44063:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"44063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"auth","nameLocation":"44088:4:0","nodeType":"VariableDeclaration","scope":2310,"src":"44080:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"44080:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44050:43:0"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"44120:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"44120:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"44119:9:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2360,"nodeType":"FunctionDefinition","src":"45151:327:0","nodes":[],"body":{"id":2359,"nodeType":"Block","src":"45204:274:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45218:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45232:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45224:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"45224:7:0","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45224:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45218:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"45214:87:0","trueBody":{"id":2331,"nodeType":"Block","src":"45236:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45287:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"45279:7:0","typeDescriptions":{}}},"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2324,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"45257:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45257:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2330,"nodeType":"RevertStatement","src":"45250:40:0"}]}},{"assignments":[2334],"declarations":[{"constant":false,"id":2334,"mutability":"mutable","name":"previousOwner","nameLocation":"45318:13:0","nodeType":"VariableDeclaration","scope":2359,"src":"45310:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2333,"name":"address","nodeType":"ElementaryTypeName","src":"45310:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2343,"initialValue":{"arguments":[{"id":2336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"45342:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2337,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"45346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"45355:7:0","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2335,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"45334:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45334:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"45310:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"45380:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45397:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2345,"name":"address","nodeType":"ElementaryTypeName","src":"45397:7:0","typeDescriptions":{}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45397:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45380:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"IfStatement","src":"45376:96:0","trueBody":{"id":2357,"nodeType":"Block","src":"45409:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45458:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45450:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2351,"name":"address","nodeType":"ElementaryTypeName","src":"45450:7:0","typeDescriptions":{}}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45450:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2350,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"45430:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45430:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2356,"nodeType":"RevertStatement","src":"45423:38:0"}]}}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"44835:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"45160:5:0","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"to","nameLocation":"45174:2:0","nodeType":"VariableDeclaration","scope":2360,"src":"45166:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"45166:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"mutability":"mutable","name":"tokenId","nameLocation":"45186:7:0","nodeType":"VariableDeclaration","scope":2360,"src":"45178:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"45178:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45165:29:0"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[],"src":"45204:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2375,"nodeType":"FunctionDefinition","src":"45829:100:0","nodes":[],"body":{"id":2374,"nodeType":"Block","src":"45886:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2369,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"45906:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"45910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45919:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2368,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2401,"src":"45896:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45896:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"45896:26:0"}]},"documentation":{"id":2361,"nodeType":"StructuredDocumentation","src":"45484:340:0","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"45838:9:0","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"to","nameLocation":"45856:2:0","nodeType":"VariableDeclaration","scope":2375,"src":"45848:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2362,"name":"address","nodeType":"ElementaryTypeName","src":"45848:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"tokenId","nameLocation":"45868:7:0","nodeType":"VariableDeclaration","scope":2375,"src":"45860:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"45860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45847:29:0"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"45886:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2401,"nodeType":"FunctionDefinition","src":"46150:182:0","nodes":[],"body":{"id":2400,"nodeType":"Block","src":"46234:98:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46250:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2385,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"46244:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46244:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"46244:18:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46303:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46295:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"46295:7:0","typeDescriptions":{}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46295:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2395,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"46307:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2396,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"46311:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2397,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"46320:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2390,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"46272:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46272:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2399,"nodeType":"ExpressionStatement","src":"46272:53:0"}]},"documentation":{"id":2376,"nodeType":"StructuredDocumentation","src":"45935:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"46159:9:0","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"to","nameLocation":"46177:2:0","nodeType":"VariableDeclaration","scope":2401,"src":"46169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"46169:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"tokenId","nameLocation":"46189:7:0","nodeType":"VariableDeclaration","scope":2401,"src":"46181:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"46181:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"data","nameLocation":"46211:4:0","nodeType":"VariableDeclaration","scope":2401,"src":"46198:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"46198:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46168:48:0"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"46234:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2434,"nodeType":"FunctionDefinition","src":"46658:227:0","nodes":[],"body":{"id":2433,"nodeType":"Block","src":"46699:186:0","nodes":[],"statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"previousOwner","nameLocation":"46717:13:0","nodeType":"VariableDeclaration","scope":2433,"src":"46709:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"46709:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2420,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46749:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46741:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2410,"name":"address","nodeType":"ElementaryTypeName","src":"46741:7:0","typeDescriptions":{}}},"id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46741:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46770:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46762:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"46762:7:0","typeDescriptions":{}}},"id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46762:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2409,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"46733:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46733:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"46709:64:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"46787:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46812:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"46804:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"46804:7:0","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46804:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"46787:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"46783:96:0","trueBody":{"id":2431,"nodeType":"Block","src":"46816:63:0","statements":[{"errorCall":{"arguments":[{"id":2428,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"46860:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2427,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"46837:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46837:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2430,"nodeType":"RevertStatement","src":"46830:38:0"}]}}]},"documentation":{"id":2402,"nodeType":"StructuredDocumentation","src":"46338:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"46667:5:0","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"tokenId","nameLocation":"46681:7:0","nodeType":"VariableDeclaration","scope":2434,"src":"46673:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"46673:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46672:17:0"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[],"src":"46699:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2494,"nodeType":"FunctionDefinition","src":"47209:460:0","nodes":[],"body":{"id":2493,"nodeType":"Block","src":"47280:389:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47294:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47308:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47300:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2445,"name":"address","nodeType":"ElementaryTypeName","src":"47300:7:0","typeDescriptions":{}}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47300:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47294:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"47290:87:0","trueBody":{"id":2457,"nodeType":"Block","src":"47312:65:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47363:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47355:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2451,"name":"address","nodeType":"ElementaryTypeName","src":"47355:7:0","typeDescriptions":{}}},"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47355:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2450,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"47333:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47333:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2456,"nodeType":"RevertStatement","src":"47326:40:0"}]}},{"assignments":[2460],"declarations":[{"constant":false,"id":2460,"mutability":"mutable","name":"previousOwner","nameLocation":"47394:13:0","nodeType":"VariableDeclaration","scope":2493,"src":"47386:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2459,"name":"address","nodeType":"ElementaryTypeName","src":"47386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2469,"initialValue":{"arguments":[{"id":2462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"47418:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47431:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"47431:7:0","typeDescriptions":{}}},"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47431:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2461,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"47410:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47410:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47386:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47456:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47481:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47473:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2471,"name":"address","nodeType":"ElementaryTypeName","src":"47473:7:0","typeDescriptions":{}}},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47473:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47456:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47558:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2482,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47575:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47558:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"47554:109:0","trueBody":{"id":2490,"nodeType":"Block","src":"47581:82:0","statements":[{"errorCall":{"arguments":[{"id":2485,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"47623:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2486,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47629:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"47638:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2484,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"47602:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) pure"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47602:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2489,"nodeType":"RevertStatement","src":"47595:57:0"}]}},"id":2492,"nodeType":"IfStatement","src":"47452:211:0","trueBody":{"id":2480,"nodeType":"Block","src":"47485:63:0","statements":[{"errorCall":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"47529:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"47506:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47506:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"RevertStatement","src":"47499:38:0"}]}}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"46891:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"47218:9:0","parameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"from","nameLocation":"47236:4:0","nodeType":"VariableDeclaration","scope":2494,"src":"47228:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"47228:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"to","nameLocation":"47250:2:0","nodeType":"VariableDeclaration","scope":2494,"src":"47242:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"47242:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"tokenId","nameLocation":"47262:7:0","nodeType":"VariableDeclaration","scope":2494,"src":"47254:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"47254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47227:43:0"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[],"src":"47280:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2512,"nodeType":"FunctionDefinition","src":"48602:128:0","nodes":[],"body":{"id":2511,"nodeType":"Block","src":"48677:53:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2505,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"48701:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"48707:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"48711:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"48720:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2504,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[2512,2538],"referencedDeclaration":2538,"src":"48687:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48687:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2510,"nodeType":"ExpressionStatement","src":"48687:36:0"}]},"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"47675:922:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48611:13:0","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"from","nameLocation":"48633:4:0","nodeType":"VariableDeclaration","scope":2512,"src":"48625:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"48625:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"to","nameLocation":"48647:2:0","nodeType":"VariableDeclaration","scope":2512,"src":"48639:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"48639:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2501,"mutability":"mutable","name":"tokenId","nameLocation":"48659:7:0","nodeType":"VariableDeclaration","scope":2512,"src":"48651:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"48651:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48624:43:0"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[],"src":"48677:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"48967:204:0","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"49069:102:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2526,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49095:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2524,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"49079:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49079:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2529,"nodeType":"ExpressionStatement","src":"49079:28:0"},{"expression":{"arguments":[{"id":2531,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"49140:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"49146:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2533,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"49150:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"49159:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2530,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"49117:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"49117:47:0"}]},"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"48736:226:0","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"48976:13:0","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"mutability":"mutable","name":"from","nameLocation":"48998:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"48990:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"48990:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"to","nameLocation":"49012:2:0","nodeType":"VariableDeclaration","scope":2538,"src":"49004:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2516,"name":"address","nodeType":"ElementaryTypeName","src":"49004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2519,"mutability":"mutable","name":"tokenId","nameLocation":"49024:7:0","nodeType":"VariableDeclaration","scope":2538,"src":"49016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2518,"name":"uint256","nodeType":"ElementaryTypeName","src":"49016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"data","nameLocation":"49046:4:0","nodeType":"VariableDeclaration","scope":2538,"src":"49033:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"49033:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48989:62:0"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"49069:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2556,"nodeType":"FunctionDefinition","src":"49614:120:0","nodes":[],"body":{"id":2555,"nodeType":"Block","src":"49684:50:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2549,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"49703:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2550,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2543,"src":"49707:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2551,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2545,"src":"49716:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49722:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2548,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2556,2622],"referencedDeclaration":2622,"src":"49694:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49694:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"ExpressionStatement","src":"49694:33:0"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"49177:432:0","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49623:8:0","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"to","nameLocation":"49640:2:0","nodeType":"VariableDeclaration","scope":2556,"src":"49632:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2540,"name":"address","nodeType":"ElementaryTypeName","src":"49632:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"tokenId","nameLocation":"49652:7:0","nodeType":"VariableDeclaration","scope":2556,"src":"49644:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2542,"name":"uint256","nodeType":"ElementaryTypeName","src":"49644:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"auth","nameLocation":"49669:4:0","nodeType":"VariableDeclaration","scope":2556,"src":"49661:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2544,"name":"address","nodeType":"ElementaryTypeName","src":"49661:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49631:43:0"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"49684:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2622,"nodeType":"FunctionDefinition","src":"49916:662:0","nodes":[],"body":{"id":2621,"nodeType":"Block","src":"50010:568:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50076:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2569,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50089:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50105:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50097:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"50097:7:0","typeDescriptions":{}}},"id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50097:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50089:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50076:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"IfStatement","src":"50072:460:0","trueBody":{"id":2613,"nodeType":"Block","src":"50109:423:0","statements":[{"assignments":[2577],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"owner","nameLocation":"50131:5:0","nodeType":"VariableDeclaration","scope":2613,"src":"50123:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2576,"name":"address","nodeType":"ElementaryTypeName","src":"50123:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2581,"initialValue":{"arguments":[{"id":2579,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"50139:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50139:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"50123:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50289:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50305:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2583,"name":"address","nodeType":"ElementaryTypeName","src":"50297:7:0","typeDescriptions":{}}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50297:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50289:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2589,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50320:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50311:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"50328:30:0","subExpression":{"arguments":[{"id":2593,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2594,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50353:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2592,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"50329:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50329:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50289:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2603,"nodeType":"IfStatement","src":"50285:142:0","trueBody":{"id":2602,"nodeType":"Block","src":"50360:67:0","statements":[{"errorCall":{"arguments":[{"id":2599,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"50407:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2598,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"50385:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50385:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2601,"nodeType":"RevertStatement","src":"50378:34:0"}]}},{"condition":{"id":2604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"50445:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2612,"nodeType":"IfStatement","src":"50441:81:0","trueBody":{"id":2611,"nodeType":"Block","src":"50456:66:0","statements":[{"eventCall":{"arguments":[{"id":2606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"50488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50495:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50499:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"50479:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50479:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"EmitStatement","src":"50474:33:0"}]}}]}},{"expression":{"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2615,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"50542:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2617,"indexExpression":{"id":2616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"50558:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50542:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"50569:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50542:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2620,"nodeType":"ExpressionStatement","src":"50542:29:0"}]},"documentation":{"id":2557,"nodeType":"StructuredDocumentation","src":"49740:171:0","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"49925:8:0","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"to","nameLocation":"49942:2:0","nodeType":"VariableDeclaration","scope":2622,"src":"49934:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2558,"name":"address","nodeType":"ElementaryTypeName","src":"49934:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"tokenId","nameLocation":"49954:7:0","nodeType":"VariableDeclaration","scope":2622,"src":"49946:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2560,"name":"uint256","nodeType":"ElementaryTypeName","src":"49946:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"auth","nameLocation":"49971:4:0","nodeType":"VariableDeclaration","scope":2622,"src":"49963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"49963:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"emitEvent","nameLocation":"49982:9:0","nodeType":"VariableDeclaration","scope":2622,"src":"49977:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2564,"name":"bool","nodeType":"ElementaryTypeName","src":"49977:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"49933:59:0"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"50010:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2659,"nodeType":"FunctionDefinition","src":"50787:312:0","nodes":[],"body":{"id":2658,"nodeType":"Block","src":"50880:219:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2632,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50894:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50914:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"50906:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2633,"name":"address","nodeType":"ElementaryTypeName","src":"50906:7:0","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50906:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50894:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2643,"nodeType":"IfStatement","src":"50890:91:0","trueBody":{"id":2642,"nodeType":"Block","src":"50918:63:0","statements":[{"errorCall":{"arguments":[{"id":2639,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"50961:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2638,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"50939:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50939:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2641,"nodeType":"RevertStatement","src":"50932:38:0"}]}},{"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2644,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"50990:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2647,"indexExpression":{"id":2645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51009:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50990:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2648,"indexExpression":{"id":2646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51016:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50990:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2649,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51028:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"50990:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2651,"nodeType":"ExpressionStatement","src":"50990:46:0"},{"eventCall":{"arguments":[{"id":2653,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2625,"src":"51066:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2654,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"51073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2655,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"51083:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2652,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"51051:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51051:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"EmitStatement","src":"51046:46:0"}]},"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"50584:198:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"50796:18:0","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"owner","nameLocation":"50823:5:0","nodeType":"VariableDeclaration","scope":2659,"src":"50815:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2624,"name":"address","nodeType":"ElementaryTypeName","src":"50815:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"operator","nameLocation":"50838:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50830:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"50830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"approved","nameLocation":"50853:8:0","nodeType":"VariableDeclaration","scope":2659,"src":"50848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2628,"name":"bool","nodeType":"ElementaryTypeName","src":"50848:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"50814:48:0"},"returnParameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"50880:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":2688,"nodeType":"FunctionDefinition","src":"51334:241:0","nodes":[],"body":{"id":2687,"nodeType":"Block","src":"51406:169:0","nodes":[],"statements":[{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"owner","nameLocation":"51424:5:0","nodeType":"VariableDeclaration","scope":2687,"src":"51416:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"51416:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2672,"initialValue":{"arguments":[{"id":2670,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51441:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2669,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"51432:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51432:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"51416:33:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51463:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51472:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2674,"name":"address","nodeType":"ElementaryTypeName","src":"51472:7:0","typeDescriptions":{}}},"id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51472:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"51463:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"51459:88:0","trueBody":{"id":2683,"nodeType":"Block","src":"51484:63:0","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"51528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2679,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"51505:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51505:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"RevertStatement","src":"51498:38:0"}]}},{"expression":{"id":2685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"51563:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2666,"id":2686,"nodeType":"Return","src":"51556:12:0"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"51105:224:0","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"51343:13:0","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"tokenId","nameLocation":"51365:7:0","nodeType":"VariableDeclaration","scope":2688,"src":"51357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"51357:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51356:17:0"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"51397:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"51397:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"51396:9:0"},"scope":2753,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2752,"nodeType":"FunctionDefinition","src":"52114:782:0","nodes":[],"body":{"id":2751,"nodeType":"Block","src":"52216:680:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52230:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52233:4:0","memberName":"code","nodeType":"MemberAccess","src":"52230:7:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52238:6:0","memberName":"length","nodeType":"MemberAccess","src":"52230:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52247:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52230:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"52226:664:0","trueBody":{"id":2749,"nodeType":"Block","src":"52250:640:0","statements":[{"clauses":[{"block":{"id":2729,"nodeType":"Block","src":"52364:162:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2718,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"52386:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2719,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52396:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52412:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52396:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52429:8:0","memberName":"selector","nodeType":"MemberAccess","src":"52396:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"52386:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"IfStatement","src":"52382:130:0","trueBody":{"id":2727,"nodeType":"Block","src":"52439:73:0","statements":[{"errorCall":{"arguments":[{"id":2724,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52490:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2723,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52468:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52468:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2726,"nodeType":"RevertStatement","src":"52461:32:0"}]}}]},"errorName":"","id":2730,"nodeType":"TryCatchClause","parameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"retval","nameLocation":"52356:6:0","nodeType":"VariableDeclaration","scope":2730,"src":"52349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"52349:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"52348:15:0"},"src":"52340:186:0"},{"block":{"id":2746,"nodeType":"Block","src":"52555:325:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2734,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"52577:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52584:6:0","memberName":"length","nodeType":"MemberAccess","src":"52577:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52594:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"52577:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2744,"nodeType":"Block","src":"52676:190:0","statements":[{"AST":{"nativeSrc":"52762:86:0","nodeType":"YulBlock","src":"52762:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"52799:2:0","nodeType":"YulLiteral","src":"52799:2:0","type":"","value":"32"},{"name":"reason","nativeSrc":"52803:6:0","nodeType":"YulIdentifier","src":"52803:6:0"}],"functionName":{"name":"add","nativeSrc":"52795:3:0","nodeType":"YulIdentifier","src":"52795:3:0"},"nativeSrc":"52795:15:0","nodeType":"YulFunctionCall","src":"52795:15:0"},{"arguments":[{"name":"reason","nativeSrc":"52818:6:0","nodeType":"YulIdentifier","src":"52818:6:0"}],"functionName":{"name":"mload","nativeSrc":"52812:5:0","nodeType":"YulIdentifier","src":"52812:5:0"},"nativeSrc":"52812:13:0","nodeType":"YulFunctionCall","src":"52812:13:0"}],"functionName":{"name":"revert","nativeSrc":"52788:6:0","nodeType":"YulIdentifier","src":"52788:6:0"},"nativeSrc":"52788:38:0","nodeType":"YulFunctionCall","src":"52788:38:0"},"nativeSrc":"52788:38:0","nodeType":"YulExpressionStatement","src":"52788:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52803:6:0","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"52818:6:0","valueSize":1}],"id":2743,"nodeType":"InlineAssembly","src":"52753:95:0"}]},"id":2745,"nodeType":"IfStatement","src":"52573:293:0","trueBody":{"id":2742,"nodeType":"Block","src":"52597:73:0","statements":[{"errorCall":{"arguments":[{"id":2739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52648:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2738,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"52626:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52626:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"RevertStatement","src":"52619:32:0"}]}}]},"errorName":"","id":2747,"nodeType":"TryCatchClause","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"reason","nameLocation":"52547:6:0","nodeType":"VariableDeclaration","scope":2747,"src":"52534:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"52534:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52533:21:0"},"src":"52527:353:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2709,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"52305:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"52319:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"52325:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2713,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"52334:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"52284:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2705,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"52268:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1589_$","typeString":"type(contract IERC721Receiver)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1589","typeString":"contract IERC721Receiver"}},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52288:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"52268:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52268:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2748,"nodeType":"TryStatement","src":"52264:616:0"}]}}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"51581:528:0","text":" @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"52123:22:0","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"from","nameLocation":"52154:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52146:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"52146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"to","nameLocation":"52168:2:0","nodeType":"VariableDeclaration","scope":2752,"src":"52160:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2692,"name":"address","nodeType":"ElementaryTypeName","src":"52160:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenId","nameLocation":"52180:7:0","nodeType":"VariableDeclaration","scope":2752,"src":"52172:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"52172:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"data","nameLocation":"52202:4:0","nodeType":"VariableDeclaration","scope":2752,"src":"52189:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"52189:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52145:62:0"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"52216:0:0"},"scope":2753,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1763,"name":"Context","nameLocations":["36000:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1572,"src":"36000:7:0"},"id":1764,"nodeType":"InheritanceSpecifier","src":"36000:7:0"},{"baseName":{"id":1765,"name":"ERC165","nameLocations":["36009:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":1621,"src":"36009:6:0"},"id":1766,"nodeType":"InheritanceSpecifier","src":"36009:6:0"},{"baseName":{"id":1767,"name":"IERC721","nameLocations":["36017:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1735,"src":"36017:7:0"},"id":1768,"nodeType":"InheritanceSpecifier","src":"36017:7:0"},{"baseName":{"id":1769,"name":"IERC721Metadata","nameLocations":["36026:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1760,"src":"36026:15:0"},"id":1770,"nodeType":"InheritanceSpecifier","src":"36026:15:0"},{"baseName":{"id":1771,"name":"IERC721Errors","nameLocations":["36043:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"36043:13:0"},"id":1772,"nodeType":"InheritanceSpecifier","src":"36043:13:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"35725:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"linearizedBaseContracts":[2753,89,1760,1735,1621,1600,1572],"name":"ERC721","nameLocation":"35990:6:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]},{"id":2754,"nodeType":"PragmaDirective","src":"52924:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2844,"nodeType":"ContractDefinition","src":"52951:1070:0","nodes":[{"id":2762,"nodeType":"VariableDeclaration","src":"53002:43:0","nodes":[],"constant":false,"functionSelector":"00923f9e","mutability":"mutable","name":"tokenExists","nameLocation":"53034:11:0","scope":2844,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":2761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"53010:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"53002:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2760,"name":"bool","nodeType":"ElementaryTypeName","src":"53021:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":2770,"nodeType":"FunctionDefinition","src":"53052:44:0","nodes":[],"body":{"id":2769,"nodeType":"Block","src":"53094:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d4e4953544e4654","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53073:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2419f5536bab3a0eae0a86c783cff578cd3672c5668c174fc48669ebdb6ace1","typeString":"literal_string \"MNISTNFT\""},"value":"MNISTNFT"},{"hexValue":"4d4e495354","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53085:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_47df03a69aa0eba5a1809cab76df0b5e69bc59ff744a4761b32b57ecb4197a03","typeString":"literal_string \"MNIST\""},"value":"MNIST"}],"id":2767,"kind":"baseConstructorSpecifier","modifierName":{"id":2764,"name":"ERC721","nameLocations":["53066:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"53066:6:0"},"nodeType":"ModifierInvocation","src":"53066:27:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2763,"nodeType":"ParameterList","parameters":[],"src":"53063:2:0"},"returnParameters":{"id":2768,"nodeType":"ParameterList","parameters":[],"src":"53094:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2800,"nodeType":"FunctionDefinition","src":"53102:218:0","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"53156:164:0","nodes":[],"statements":[{"condition":{"baseExpression":{"id":2777,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53170:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2779,"indexExpression":{"id":2778,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53182:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53170:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2787,"nodeType":"IfStatement","src":"53166:73:0","trueBody":{"id":2786,"nodeType":"Block","src":"53192:47:0","statements":[{"expression":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2780,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53206:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53216:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53226:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"53216:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53206:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2785,"nodeType":"ExpressionStatement","src":"53206:22:0"}]}},{"expression":{"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2788,"name":"tokenExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"53249:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2790,"indexExpression":{"id":2789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"53249:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53272:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"53249:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2793,"nodeType":"ExpressionStatement","src":"53249:27:0"},{"expression":{"arguments":[{"id":2795,"name":"sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"53297:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"53305:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2794,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2375,2401],"referencedDeclaration":2375,"src":"53287:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53287:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"53287:26:0"}]},"functionSelector":"94bf804d","implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"53111:4:0","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"tokenId","nameLocation":"53124:7:0","nodeType":"VariableDeclaration","scope":2800,"src":"53116:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"53116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"sendTo","nameLocation":"53141:6:0","nodeType":"VariableDeclaration","scope":2800,"src":"53133:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"53133:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"53115:33:0"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"53156:0:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2823,"nodeType":"FunctionDefinition","src":"53373:363:0","nodes":[],"body":{"id":2822,"nodeType":"Block","src":"53542:194:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":2815,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"53581:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2814,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"53575:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53575:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2817,"nodeType":"ExpressionStatement","src":"53575:14:0"},{"expression":{"expression":{"expression":{"id":2818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53699:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53704:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":2823,"src":"53699:21:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53721:8:0","memberName":"selector","nodeType":"MemberAccess","src":"53699:30:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2813,"id":2821,"nodeType":"Return","src":"53692:37:0"}]},"baseFunctions":[1588],"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"53382:16:0","overrides":{"id":2810,"nodeType":"OverrideSpecifier","overrides":[],"src":"53516:8:0"},"parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"operator","nameLocation":"53416:8:0","nodeType":"VariableDeclaration","scope":2823,"src":"53408:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"53408:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"from","nameLocation":"53442:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53434:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2803,"name":"address","nodeType":"ElementaryTypeName","src":"53434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"tokenId","nameLocation":"53464:7:0","nodeType":"VariableDeclaration","scope":2823,"src":"53456:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"53456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"data","nameLocation":"53496:4:0","nodeType":"VariableDeclaration","scope":2823,"src":"53481:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2807,"name":"bytes","nodeType":"ElementaryTypeName","src":"53481:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"53398:108:0"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"53534:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2811,"name":"bytes4","nodeType":"ElementaryTypeName","src":"53534:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"53533:8:0"},"scope":2844,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2827,"nodeType":"FunctionDefinition","src":"53767:30:0","nodes":[],"body":{"id":2826,"nodeType":"Block","src":"53795:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"53775:2:0"},"returnParameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"53795:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2831,"nodeType":"FunctionDefinition","src":"53836:29:0","nodes":[],"body":{"id":2830,"nodeType":"Block","src":"53863:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"53843:2:0"},"returnParameters":{"id":2829,"nodeType":"ParameterList","parameters":[],"src":"53863:0:0"},"scope":2844,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2843,"nodeType":"FunctionDefinition","src":"53922:97:0","nodes":[],"body":{"id":2842,"nodeType":"Block","src":"53974:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2838,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"53999:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MNISTNFT_$2844","typeString":"contract MNISTNFT"}],"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53991:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"53991:7:0","typeDescriptions":{}}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53991:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54005:7:0","memberName":"balance","nodeType":"MemberAccess","src":"53991:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2835,"id":2841,"nodeType":"Return","src":"53984:28:0"}]},"functionSelector":"12065fe0","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"53931:10:0","parameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"53941:2:0"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"53965:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"53965:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53964:9:0"},"scope":2844,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":2755,"name":"ERC721","nameLocations":["52972:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"52972:6:0"},"id":2756,"nodeType":"InheritanceSpecifier","src":"52972:6:0"},{"baseName":{"id":2757,"name":"IERC721Receiver","nameLocations":["52980:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1589,"src":"52980:15:0"},"id":2758,"nodeType":"InheritanceSpecifier","src":"52980:15:0"}],"canonicalName":"MNISTNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[2844,1589,2753,89,1760,1735,1621,1600,1572],"name":"MNISTNFT","nameLocation":"52960:8:0","scope":2845,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[1634,1643,1652]}]},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/Math.sol/Math.json b/examples/on-chain_mnist/contracts/out/Math.sol/Math.json deleted file mode 100644 index 4e1d4bc..0000000 --- a/examples/on-chain_mnist/contracts/out/Math.sol/Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5bae0c6d595a09fc327023f12a083cbf6b72c78526d8f8ae552e35887fc5ba664736f6c63430008180033","sourceMap":"203:14914:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:9;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5bae0c6d595a09fc327023f12a083cbf6b72c78526d8f8ae552e35887fc5ba664736f6c63430008180033","sourceMap":"203:14914:9:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","id":2684,"exportedSymbols":{"Math":[2683]},"nodeType":"SourceUnit","src":"103:15015:9","nodes":[{"id":1631,"nodeType":"PragmaDirective","src":"103:24:9","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2683,"nodeType":"ContractDefinition","src":"203:14914:9","nodes":[{"id":1635,"nodeType":"ErrorDefinition","src":"277:29:9","nodes":[],"documentation":{"id":1633,"nodeType":"StructuredDocumentation","src":"222:50:9","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","name":"MathOverflowedMulDiv","nameLocation":"283:20:9","parameters":{"id":1634,"nodeType":"ParameterList","parameters":[],"src":"303:2:9"}},{"id":1640,"nodeType":"EnumDefinition","src":"312:169:9","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":1636,"name":"Floor","nameLocation":"336:5:9","nodeType":"EnumValue","src":"336:5:9"},{"id":1637,"name":"Ceil","nameLocation":"379:4:9","nodeType":"EnumValue","src":"379:4:9"},{"id":1638,"name":"Trunc","nameLocation":"421:5:9","nodeType":"EnumValue","src":"421:5:9"},{"id":1639,"name":"Expand","nameLocation":"451:6:9","nodeType":"EnumValue","src":"451:6:9"}],"name":"Rounding","nameLocation":"317:8:9"},{"id":1672,"nodeType":"FunctionDefinition","src":"585:216:9","nodes":[],"body":{"id":1671,"nodeType":"Block","src":"661:140:9","nodes":[],"statements":[{"id":1670,"nodeType":"UncheckedBlock","src":"671:124:9","statements":[{"assignments":[1653],"declarations":[{"constant":false,"id":1653,"mutability":"mutable","name":"c","nameLocation":"703:1:9","nodeType":"VariableDeclaration","scope":1670,"src":"695:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1652,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1657,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"707:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"711:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1658,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"730:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1659,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"734:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1665,"nodeType":"IfStatement","src":"726:28:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1651,"id":1664,"nodeType":"Return","src":"737:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1667,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"782:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1651,"id":1669,"nodeType":"Return","src":"768:16:9"}]}]},"documentation":{"id":1641,"nodeType":"StructuredDocumentation","src":"487:93:9","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:9","parameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1643,"mutability":"mutable","name":"a","nameLocation":"609:1:9","nodeType":"VariableDeclaration","scope":1672,"src":"601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1642,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"b","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1672,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:9"},"returnParameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"646:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1647,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"652:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1649,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1700,"nodeType":"FunctionDefinition","src":"908:189:9","nodes":[],"body":{"id":1699,"nodeType":"Block","src":"984:113:9","nodes":[],"statements":[{"id":1698,"nodeType":"UncheckedBlock","src":"994:97:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1022:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1685,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1026:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1691,"nodeType":"IfStatement","src":"1018:28:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1683,"id":1690,"nodeType":"Return","src":"1029:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1693,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1074:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1694,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1078:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1683,"id":1697,"nodeType":"Return","src":"1060:20:9"}]}]},"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"807:96:9","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:9","parameters":{"id":1678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"mutability":"mutable","name":"a","nameLocation":"932:1:9","nodeType":"VariableDeclaration","scope":1700,"src":"924:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"b","nameLocation":"943:1:9","nodeType":"VariableDeclaration","scope":1700,"src":"935:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1676,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:9"},"returnParameters":{"id":1683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1700,"src":"969:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1679,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1700,"src":"975:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1742,"nodeType":"FunctionDefinition","src":"1207:493:9","nodes":[],"body":{"id":1741,"nodeType":"Block","src":"1283:417:9","nodes":[],"statements":[{"id":1740,"nodeType":"UncheckedBlock","src":"1293:401:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1712,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1551:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1719,"nodeType":"IfStatement","src":"1547:28:9","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":1715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1711,"id":1718,"nodeType":"Return","src":"1559:16:9"}},{"assignments":[1721],"declarations":[{"constant":false,"id":1721,"mutability":"mutable","name":"c","nameLocation":"1597:1:9","nodeType":"VariableDeclaration","scope":1740,"src":"1589:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1725,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1722,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1601:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1723,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"1605:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1726,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"1624:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1727,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"1628:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1729,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"1633:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1735,"nodeType":"IfStatement","src":"1620:33:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1711,"id":1734,"nodeType":"Return","src":"1636:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1737,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"1681:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1711,"id":1739,"nodeType":"Return","src":"1667:16:9"}]}]},"documentation":{"id":1701,"nodeType":"StructuredDocumentation","src":"1103:99:9","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:9","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"a","nameLocation":"1231:1:9","nodeType":"VariableDeclaration","scope":1742,"src":"1223:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"b","nameLocation":"1242:1:9","nodeType":"VariableDeclaration","scope":1742,"src":"1234:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:9"},"returnParameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"1268:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1707,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"1274:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1709,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1770,"nodeType":"FunctionDefinition","src":"1811:190:9","nodes":[],"body":{"id":1769,"nodeType":"Block","src":"1887:114:9","nodes":[],"statements":[{"id":1768,"nodeType":"UncheckedBlock","src":"1897:98:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1754,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1925:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1761,"nodeType":"IfStatement","src":"1921:29:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1759,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1753,"id":1760,"nodeType":"Return","src":"1933:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"1978:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1764,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1982:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1766,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1753,"id":1767,"nodeType":"Return","src":"1964:20:9"}]}]},"documentation":{"id":1743,"nodeType":"StructuredDocumentation","src":"1706:100:9","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:9","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1745,"mutability":"mutable","name":"a","nameLocation":"1835:1:9","nodeType":"VariableDeclaration","scope":1770,"src":"1827:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"b","nameLocation":"1846:1:9","nodeType":"VariableDeclaration","scope":1770,"src":"1838:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:9"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1770,"src":"1872:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1749,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1770,"src":"1878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1751,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1798,"nodeType":"FunctionDefinition","src":"2122:190:9","nodes":[],"body":{"id":1797,"nodeType":"Block","src":"2198:114:9","nodes":[],"statements":[{"id":1796,"nodeType":"UncheckedBlock","src":"2208:98:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1782,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1789,"nodeType":"IfStatement","src":"2232:29:9","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1787,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1781,"id":1788,"nodeType":"Return","src":"2244:17:9"}},{"expression":{"components":[{"hexValue":"74727565","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1791,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"2289:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1792,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2293:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1781,"id":1795,"nodeType":"Return","src":"2275:20:9"}]}]},"documentation":{"id":1771,"nodeType":"StructuredDocumentation","src":"2007:110:9","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:9","parameters":{"id":1776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1773,"mutability":"mutable","name":"a","nameLocation":"2146:1:9","nodeType":"VariableDeclaration","scope":1798,"src":"2138:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1772,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1775,"mutability":"mutable","name":"b","nameLocation":"2157:1:9","nodeType":"VariableDeclaration","scope":1798,"src":"2149:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:9"},"returnParameters":{"id":1781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"2183:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1777,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"2189:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1816,"nodeType":"FunctionDefinition","src":"2382:104:9","nodes":[],"body":{"id":1815,"nodeType":"Block","src":"2449:37:9","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1808,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"2466:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1809,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"2470:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1812,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"2478:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:9","trueExpression":{"id":1811,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"2474:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1807,"id":1814,"nodeType":"Return","src":"2459:20:9"}]},"documentation":{"id":1799,"nodeType":"StructuredDocumentation","src":"2318:59:9","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:9","parameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"a","nameLocation":"2403:1:9","nodeType":"VariableDeclaration","scope":1816,"src":"2395:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1803,"mutability":"mutable","name":"b","nameLocation":"2414:1:9","nodeType":"VariableDeclaration","scope":1816,"src":"2406:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:9"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1816,"src":"2440:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1805,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1834,"nodeType":"FunctionDefinition","src":"2557:104:9","nodes":[],"body":{"id":1833,"nodeType":"Block","src":"2624:37:9","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1826,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"2641:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1827,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"2645:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1830,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"2653:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:9","trueExpression":{"id":1829,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"2649:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1825,"id":1832,"nodeType":"Return","src":"2634:20:9"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"2492:60:9","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:9","parameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1819,"mutability":"mutable","name":"a","nameLocation":"2578:1:9","nodeType":"VariableDeclaration","scope":1834,"src":"2570:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1821,"mutability":"mutable","name":"b","nameLocation":"2589:1:9","nodeType":"VariableDeclaration","scope":1834,"src":"2581:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1820,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:9"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1834,"src":"2615:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1857,"nodeType":"FunctionDefinition","src":"2774:153:9","nodes":[],"body":{"id":1856,"nodeType":"Block","src":"2845:82:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1844,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2900:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1845,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"2904:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1847,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1848,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"2910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1849,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"2914:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1843,"id":1855,"nodeType":"Return","src":"2892:28:9"}]},"documentation":{"id":1835,"nodeType":"StructuredDocumentation","src":"2667:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:9","parameters":{"id":1840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"a","nameLocation":"2799:1:9","nodeType":"VariableDeclaration","scope":1857,"src":"2791:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1836,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"b","nameLocation":"2810:1:9","nodeType":"VariableDeclaration","scope":1857,"src":"2802:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1838,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:9"},"returnParameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1857,"src":"2836:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1841,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1891,"nodeType":"FunctionDefinition","src":"3148:331:9","nodes":[],"body":{"id":1890,"nodeType":"Block","src":"3219:260:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"3229:127:9","trueBody":{"id":1874,"nodeType":"Block","src":"3241:115:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3340:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3344:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1866,"id":1873,"nodeType":"Return","src":"3333:12:9"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1876,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3444:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1880,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"3458:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1884,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3467:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:9","trueExpression":{"hexValue":"30","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1866,"id":1889,"nodeType":"Return","src":"3437:35:9"}]},"documentation":{"id":1858,"nodeType":"StructuredDocumentation","src":"2933:210:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:9","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"mutability":"mutable","name":"a","nameLocation":"3173:1:9","nodeType":"VariableDeclaration","scope":1891,"src":"3165:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1859,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"b","nameLocation":"3184:1:9","nodeType":"VariableDeclaration","scope":1891,"src":"3176:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1861,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:9"},"returnParameters":{"id":1866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1891,"src":"3210:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1864,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2017,"nodeType":"FunctionDefinition","src":"3803:4116:9","nodes":[],"body":{"id":2016,"nodeType":"Block","src":"3901:4018:9","nodes":[],"statements":[{"id":2015,"nodeType":"UncheckedBlock","src":"3911:4002:9","statements":[{"assignments":[1904],"declarations":[{"constant":false,"id":1904,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:9","nodeType":"VariableDeclaration","scope":2015,"src":"4232:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1908,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"4248:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1906,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"4252:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:9"},{"assignments":[1910],"declarations":[{"constant":false,"id":1910,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:9","nodeType":"VariableDeclaration","scope":2015,"src":"4312:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1911,"nodeType":"VariableDeclarationStatement","src":"4312:13:9"},{"AST":{"nativeSrc":"4392:122:9","nodeType":"YulBlock","src":"4392:122:9","statements":[{"nativeSrc":"4410:30:9","nodeType":"YulVariableDeclaration","src":"4410:30:9","value":{"arguments":[{"name":"x","nativeSrc":"4427:1:9","nodeType":"YulIdentifier","src":"4427:1:9"},{"name":"y","nativeSrc":"4430:1:9","nodeType":"YulIdentifier","src":"4430:1:9"},{"arguments":[{"kind":"number","nativeSrc":"4437:1:9","nodeType":"YulLiteral","src":"4437:1:9","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4433:3:9","nodeType":"YulIdentifier","src":"4433:3:9"},"nativeSrc":"4433:6:9","nodeType":"YulFunctionCall","src":"4433:6:9"}],"functionName":{"name":"mulmod","nativeSrc":"4420:6:9","nodeType":"YulIdentifier","src":"4420:6:9"},"nativeSrc":"4420:20:9","nodeType":"YulFunctionCall","src":"4420:20:9"},"variables":[{"name":"mm","nativeSrc":"4414:2:9","nodeType":"YulTypedName","src":"4414:2:9","type":""}]},{"nativeSrc":"4457:43:9","nodeType":"YulAssignment","src":"4457:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"4474:2:9","nodeType":"YulIdentifier","src":"4474:2:9"},{"name":"prod0","nativeSrc":"4478:5:9","nodeType":"YulIdentifier","src":"4478:5:9"}],"functionName":{"name":"sub","nativeSrc":"4470:3:9","nodeType":"YulIdentifier","src":"4470:3:9"},"nativeSrc":"4470:14:9","nodeType":"YulFunctionCall","src":"4470:14:9"},{"arguments":[{"name":"mm","nativeSrc":"4489:2:9","nodeType":"YulIdentifier","src":"4489:2:9"},{"name":"prod0","nativeSrc":"4493:5:9","nodeType":"YulIdentifier","src":"4493:5:9"}],"functionName":{"name":"lt","nativeSrc":"4486:2:9","nodeType":"YulIdentifier","src":"4486:2:9"},"nativeSrc":"4486:13:9","nodeType":"YulFunctionCall","src":"4486:13:9"}],"functionName":{"name":"sub","nativeSrc":"4466:3:9","nodeType":"YulIdentifier","src":"4466:3:9"},"nativeSrc":"4466:34:9","nodeType":"YulFunctionCall","src":"4466:34:9"},"variableNames":[{"name":"prod1","nativeSrc":"4457:5:9","nodeType":"YulIdentifier","src":"4457:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1904,"isOffset":false,"isSlot":false,"src":"4478:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"4493:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"4457:5:9","valueSize":1},{"declaration":1894,"isOffset":false,"isSlot":false,"src":"4427:1:9","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"4430:1:9","valueSize":1}],"id":1912,"nodeType":"InlineAssembly","src":"4383:131:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1913,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"4595:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1921,"nodeType":"IfStatement","src":"4591:368:9","trueBody":{"id":1920,"nodeType":"Block","src":"4607:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1916,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"4925:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1917,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"4933:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1902,"id":1919,"nodeType":"Return","src":"4918:26:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1922,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5065:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1923,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"5080:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1929,"nodeType":"IfStatement","src":"5061:88:9","trueBody":{"id":1928,"nodeType":"Block","src":"5087:62:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1925,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"5112:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1927,"nodeType":"RevertStatement","src":"5105:29:9"}]}},{"assignments":[1931],"declarations":[{"constant":false,"id":1931,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:9","nodeType":"VariableDeclaration","scope":2015,"src":"5404:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1932,"nodeType":"VariableDeclarationStatement","src":"5404:17:9"},{"AST":{"nativeSrc":"5444:291:9","nodeType":"YulBlock","src":"5444:291:9","statements":[{"nativeSrc":"5513:38:9","nodeType":"YulAssignment","src":"5513:38:9","value":{"arguments":[{"name":"x","nativeSrc":"5533:1:9","nodeType":"YulIdentifier","src":"5533:1:9"},{"name":"y","nativeSrc":"5536:1:9","nodeType":"YulIdentifier","src":"5536:1:9"},{"name":"denominator","nativeSrc":"5539:11:9","nodeType":"YulIdentifier","src":"5539:11:9"}],"functionName":{"name":"mulmod","nativeSrc":"5526:6:9","nodeType":"YulIdentifier","src":"5526:6:9"},"nativeSrc":"5526:25:9","nodeType":"YulFunctionCall","src":"5526:25:9"},"variableNames":[{"name":"remainder","nativeSrc":"5513:9:9","nodeType":"YulIdentifier","src":"5513:9:9"}]},{"nativeSrc":"5633:41:9","nodeType":"YulAssignment","src":"5633:41:9","value":{"arguments":[{"name":"prod1","nativeSrc":"5646:5:9","nodeType":"YulIdentifier","src":"5646:5:9"},{"arguments":[{"name":"remainder","nativeSrc":"5656:9:9","nodeType":"YulIdentifier","src":"5656:9:9"},{"name":"prod0","nativeSrc":"5667:5:9","nodeType":"YulIdentifier","src":"5667:5:9"}],"functionName":{"name":"gt","nativeSrc":"5653:2:9","nodeType":"YulIdentifier","src":"5653:2:9"},"nativeSrc":"5653:20:9","nodeType":"YulFunctionCall","src":"5653:20:9"}],"functionName":{"name":"sub","nativeSrc":"5642:3:9","nodeType":"YulIdentifier","src":"5642:3:9"},"nativeSrc":"5642:32:9","nodeType":"YulFunctionCall","src":"5642:32:9"},"variableNames":[{"name":"prod1","nativeSrc":"5633:5:9","nodeType":"YulIdentifier","src":"5633:5:9"}]},{"nativeSrc":"5691:30:9","nodeType":"YulAssignment","src":"5691:30:9","value":{"arguments":[{"name":"prod0","nativeSrc":"5704:5:9","nodeType":"YulIdentifier","src":"5704:5:9"},{"name":"remainder","nativeSrc":"5711:9:9","nodeType":"YulIdentifier","src":"5711:9:9"}],"functionName":{"name":"sub","nativeSrc":"5700:3:9","nodeType":"YulIdentifier","src":"5700:3:9"},"nativeSrc":"5700:21:9","nodeType":"YulFunctionCall","src":"5700:21:9"},"variableNames":[{"name":"prod0","nativeSrc":"5691:5:9","nodeType":"YulIdentifier","src":"5691:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1898,"isOffset":false,"isSlot":false,"src":"5539:11:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5667:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5691:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"5704:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"5633:5:9","valueSize":1},{"declaration":1910,"isOffset":false,"isSlot":false,"src":"5646:5:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5513:9:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5656:9:9","valueSize":1},{"declaration":1931,"isOffset":false,"isSlot":false,"src":"5711:9:9","valueSize":1},{"declaration":1894,"isOffset":false,"isSlot":false,"src":"5533:1:9","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"5536:1:9","valueSize":1}],"id":1933,"nodeType":"InlineAssembly","src":"5435:300:9"},{"assignments":[1935],"declarations":[{"constant":false,"id":1935,"mutability":"mutable","name":"twos","nameLocation":"5947:4:9","nodeType":"VariableDeclaration","scope":2015,"src":"5939:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1942,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1936,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5954:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1938,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"5973:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:9"},{"AST":{"nativeSrc":"6008:362:9","nodeType":"YulBlock","src":"6008:362:9","statements":[{"nativeSrc":"6073:37:9","nodeType":"YulAssignment","src":"6073:37:9","value":{"arguments":[{"name":"denominator","nativeSrc":"6092:11:9","nodeType":"YulIdentifier","src":"6092:11:9"},{"name":"twos","nativeSrc":"6105:4:9","nodeType":"YulIdentifier","src":"6105:4:9"}],"functionName":{"name":"div","nativeSrc":"6088:3:9","nodeType":"YulIdentifier","src":"6088:3:9"},"nativeSrc":"6088:22:9","nodeType":"YulFunctionCall","src":"6088:22:9"},"variableNames":[{"name":"denominator","nativeSrc":"6073:11:9","nodeType":"YulIdentifier","src":"6073:11:9"}]},{"nativeSrc":"6177:25:9","nodeType":"YulAssignment","src":"6177:25:9","value":{"arguments":[{"name":"prod0","nativeSrc":"6190:5:9","nodeType":"YulIdentifier","src":"6190:5:9"},{"name":"twos","nativeSrc":"6197:4:9","nodeType":"YulIdentifier","src":"6197:4:9"}],"functionName":{"name":"div","nativeSrc":"6186:3:9","nodeType":"YulIdentifier","src":"6186:3:9"},"nativeSrc":"6186:16:9","nodeType":"YulFunctionCall","src":"6186:16:9"},"variableNames":[{"name":"prod0","nativeSrc":"6177:5:9","nodeType":"YulIdentifier","src":"6177:5:9"}]},{"nativeSrc":"6317:39:9","nodeType":"YulAssignment","src":"6317:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6337:1:9","nodeType":"YulLiteral","src":"6337:1:9","type":"","value":"0"},{"name":"twos","nativeSrc":"6340:4:9","nodeType":"YulIdentifier","src":"6340:4:9"}],"functionName":{"name":"sub","nativeSrc":"6333:3:9","nodeType":"YulIdentifier","src":"6333:3:9"},"nativeSrc":"6333:12:9","nodeType":"YulFunctionCall","src":"6333:12:9"},{"name":"twos","nativeSrc":"6347:4:9","nodeType":"YulIdentifier","src":"6347:4:9"}],"functionName":{"name":"div","nativeSrc":"6329:3:9","nodeType":"YulIdentifier","src":"6329:3:9"},"nativeSrc":"6329:23:9","nodeType":"YulFunctionCall","src":"6329:23:9"},{"kind":"number","nativeSrc":"6354:1:9","nodeType":"YulLiteral","src":"6354:1:9","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6325:3:9","nodeType":"YulIdentifier","src":"6325:3:9"},"nativeSrc":"6325:31:9","nodeType":"YulFunctionCall","src":"6325:31:9"},"variableNames":[{"name":"twos","nativeSrc":"6317:4:9","nodeType":"YulIdentifier","src":"6317:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1898,"isOffset":false,"isSlot":false,"src":"6073:11:9","valueSize":1},{"declaration":1898,"isOffset":false,"isSlot":false,"src":"6092:11:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"6177:5:9","valueSize":1},{"declaration":1904,"isOffset":false,"isSlot":false,"src":"6190:5:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6105:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6197:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6317:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6340:4:9","valueSize":1},{"declaration":1935,"isOffset":false,"isSlot":false,"src":"6347:4:9","valueSize":1}],"id":1943,"nodeType":"InlineAssembly","src":"5999:371:9"},{"expression":{"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1944,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6436:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1945,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"6445:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1946,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"6453:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1949,"nodeType":"ExpressionStatement","src":"6436:21:9"},{"assignments":[1951],"declarations":[{"constant":false,"id":1951,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:9","nodeType":"VariableDeclaration","scope":2015,"src":"6775:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1950,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1958,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1953,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"6798:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1959,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7031:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1961,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7046:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1962,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7060:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"7031:36:9"},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1967,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7100:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1969,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7115:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1970,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7129:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1974,"nodeType":"ExpressionStatement","src":"7100:36:9"},{"expression":{"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1975,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7170:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1977,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7185:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1978,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7199:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1982,"nodeType":"ExpressionStatement","src":"7170:36:9"},{"expression":{"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1983,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7240:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1985,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7255:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1986,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7269:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1990,"nodeType":"ExpressionStatement","src":"7240:36:9"},{"expression":{"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1991,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7310:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1993,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7325:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1994,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7339:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1998,"nodeType":"ExpressionStatement","src":"7310:36:9"},{"expression":{"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1999,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7381:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7396:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2002,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7410:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2006,"nodeType":"ExpressionStatement","src":"7381:36:9"},{"expression":{"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7851:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2008,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7860:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2009,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"7868:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2012,"nodeType":"ExpressionStatement","src":"7851:24:9"},{"expression":{"id":2013,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7896:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1902,"id":2014,"nodeType":"Return","src":"7889:13:9"}]}]},"documentation":{"id":1892,"nodeType":"StructuredDocumentation","src":"3485:313:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:9","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1894,"mutability":"mutable","name":"x","nameLocation":"3827:1:9","nodeType":"VariableDeclaration","scope":2017,"src":"3819:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1893,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1896,"mutability":"mutable","name":"y","nameLocation":"3838:1:9","nodeType":"VariableDeclaration","scope":2017,"src":"3830:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:9","nodeType":"VariableDeclaration","scope":2017,"src":"3841:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:9"},"returnParameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"result","nameLocation":"3893:6:9","nodeType":"VariableDeclaration","scope":2017,"src":"3885:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2060,"nodeType":"FunctionDefinition","src":"8051:302:9","nodes":[],"body":{"id":2059,"nodeType":"Block","src":"8161:192:9","nodes":[],"statements":[{"assignments":[2033],"declarations":[{"constant":false,"id":2033,"mutability":"mutable","name":"result","nameLocation":"8179:6:9","nodeType":"VariableDeclaration","scope":2059,"src":"8171:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2032,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2039,"initialValue":{"arguments":[{"id":2035,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"8195:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2036,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"8198:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2037,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"8201:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2034,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2017,2060],"referencedDeclaration":2017,"src":"8188:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2041,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"8244:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2040,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"8227:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2044,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"8264:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2045,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"8267:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2046,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"8270:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2043,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2056,"nodeType":"IfStatement","src":"8223:101:9","trueBody":{"id":2055,"nodeType":"Block","src":"8288:36:9","statements":[{"expression":{"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2051,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"8302:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2054,"nodeType":"ExpressionStatement","src":"8302:11:9"}]}},{"expression":{"id":2057,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"8340:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2031,"id":2058,"nodeType":"Return","src":"8333:13:9"}]},"documentation":{"id":2018,"nodeType":"StructuredDocumentation","src":"7925:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:9","parameters":{"id":2028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2020,"mutability":"mutable","name":"x","nameLocation":"8075:1:9","nodeType":"VariableDeclaration","scope":2060,"src":"8067:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2019,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"y","nameLocation":"8086:1:9","nodeType":"VariableDeclaration","scope":2060,"src":"8078:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2024,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:9","nodeType":"VariableDeclaration","scope":2060,"src":"8089:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:9","nodeType":"VariableDeclaration","scope":2060,"src":"8110:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2026,"nodeType":"UserDefinedTypeName","pathNode":{"id":2025,"name":"Rounding","nameLocations":["8110:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"8110:8:9"},"referencedDeclaration":1640,"src":"8110:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:9"},"returnParameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2060,"src":"8152:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2172,"nodeType":"FunctionDefinition","src":"8587:1642:9","nodes":[],"body":{"id":2171,"nodeType":"Block","src":"8644:1585:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2068,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"8658:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2074,"nodeType":"IfStatement","src":"8654:45:9","trueBody":{"id":2073,"nodeType":"Block","src":"8666:33:9","statements":[{"expression":{"hexValue":"30","id":2071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2067,"id":2072,"nodeType":"Return","src":"8680:8:9"}]}},{"assignments":[2076],"declarations":[{"constant":false,"id":2076,"mutability":"mutable","name":"result","nameLocation":"9386:6:9","nodeType":"VariableDeclaration","scope":2171,"src":"9378:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2085,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9406:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2078,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2339,2374],"referencedDeclaration":2339,"src":"9401:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:9"},{"id":2170,"nodeType":"UncheckedBlock","src":"9815:408:9","statements":[{"expression":{"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9839:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9849:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9858:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9862:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2092,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2096,"nodeType":"ExpressionStatement","src":"9839:35:9"},{"expression":{"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9888:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9898:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2099,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9907:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2100,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9911:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2107,"nodeType":"ExpressionStatement","src":"9888:35:9"},{"expression":{"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9937:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9947:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2110,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"9956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2111,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9960:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2118,"nodeType":"ExpressionStatement","src":"9937:35:9"},{"expression":{"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9986:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"9996:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2121,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10005:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2122,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10009:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2129,"nodeType":"ExpressionStatement","src":"9986:35:9"},{"expression":{"id":2139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10035:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10045:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2132,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10054:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2133,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10058:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2136,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2140,"nodeType":"ExpressionStatement","src":"10035:35:9"},{"expression":{"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2141,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10084:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2142,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10094:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2143,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10103:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10107:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2147,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2151,"nodeType":"ExpressionStatement","src":"10084:35:9"},{"expression":{"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2152,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10133:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2153,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10143:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2154,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10152:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2155,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10156:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2162,"nodeType":"ExpressionStatement","src":"10133:35:9"},{"expression":{"arguments":[{"id":2164,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10193:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2165,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"10201:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2166,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"10205:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2163,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"10189:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2067,"id":2169,"nodeType":"Return","src":"10182:30:9"}]}]},"documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"8359:223:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:9","parameters":{"id":2064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"a","nameLocation":"8609:1:9","nodeType":"VariableDeclaration","scope":2172,"src":"8601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:9"},"returnParameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2172,"src":"8635:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2065,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2207,"nodeType":"FunctionDefinition","src":"10329:240:9","nodes":[],"body":{"id":2206,"nodeType":"Block","src":"10405:164:9","nodes":[],"statements":[{"id":2205,"nodeType":"UncheckedBlock","src":"10415:148:9","statements":[{"assignments":[2184],"declarations":[{"constant":false,"id":2184,"mutability":"mutable","name":"result","nameLocation":"10447:6:9","nodeType":"VariableDeclaration","scope":2205,"src":"10439:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2183,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2188,"initialValue":{"arguments":[{"id":2186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10461:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2185,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2172,2207],"referencedDeclaration":2172,"src":"10456:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2189,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2191,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"10511:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2190,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"10494:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2193,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10524:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2194,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10533:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2196,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10542:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:9","trueExpression":{"hexValue":"31","id":2199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2182,"id":2204,"nodeType":"Return","src":"10477:75:9"}]}]},"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"10235:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:9","parameters":{"id":2179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"a","nameLocation":"10351:1:9","nodeType":"VariableDeclaration","scope":2207,"src":"10343:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2178,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:9","nodeType":"VariableDeclaration","scope":2207,"src":"10354:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2177,"nodeType":"UserDefinedTypeName","pathNode":{"id":2176,"name":"Rounding","nameLocations":["10354:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"10354:8:9"},"referencedDeclaration":1640,"src":"10354:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:9"},"returnParameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2207,"src":"10396:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2180,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2339,"nodeType":"FunctionDefinition","src":"10699:983:9","nodes":[],"body":{"id":2338,"nodeType":"Block","src":"10760:922:9","nodes":[],"statements":[{"assignments":[2216],"declarations":[{"constant":false,"id":2216,"mutability":"mutable","name":"result","nameLocation":"10778:6:9","nodeType":"VariableDeclaration","scope":2338,"src":"10770:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2218,"initialValue":{"hexValue":"30","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:9"},{"id":2335,"nodeType":"UncheckedBlock","src":"10798:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2219,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10826:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2233,"nodeType":"IfStatement","src":"10822:99:9","trueBody":{"id":2232,"nodeType":"Block","src":"10844:77:9","statements":[{"expression":{"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10862:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2227,"nodeType":"ExpressionStatement","src":"10862:13:9"},{"expression":{"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"10893:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2231,"nodeType":"ExpressionStatement","src":"10893:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10938:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2248,"nodeType":"IfStatement","src":"10934:96:9","trueBody":{"id":2247,"nodeType":"Block","src":"10955:75:9","statements":[{"expression":{"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10973:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2242,"nodeType":"ExpressionStatement","src":"10973:12:9"},{"expression":{"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2243,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11003:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2246,"nodeType":"ExpressionStatement","src":"11003:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11047:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2263,"nodeType":"IfStatement","src":"11043:96:9","trueBody":{"id":2262,"nodeType":"Block","src":"11064:75:9","statements":[{"expression":{"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2254,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11082:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2257,"nodeType":"ExpressionStatement","src":"11082:12:9"},{"expression":{"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2258,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11112:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2261,"nodeType":"ExpressionStatement","src":"11112:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11156:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2278,"nodeType":"IfStatement","src":"11152:96:9","trueBody":{"id":2277,"nodeType":"Block","src":"11173:75:9","statements":[{"expression":{"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11191:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2272,"nodeType":"ExpressionStatement","src":"11191:12:9"},{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2273,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11221:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"11221:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11265:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2293,"nodeType":"IfStatement","src":"11261:93:9","trueBody":{"id":2292,"nodeType":"Block","src":"11281:73:9","statements":[{"expression":{"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11299:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2287,"nodeType":"ExpressionStatement","src":"11299:11:9"},{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2288,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11328:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"11328:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11371:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2308,"nodeType":"IfStatement","src":"11367:93:9","trueBody":{"id":2307,"nodeType":"Block","src":"11387:73:9","statements":[{"expression":{"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11405:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2302,"nodeType":"ExpressionStatement","src":"11405:11:9"},{"expression":{"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2303,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11434:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2306,"nodeType":"ExpressionStatement","src":"11434:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11477:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2323,"nodeType":"IfStatement","src":"11473:93:9","trueBody":{"id":2322,"nodeType":"Block","src":"11493:73:9","statements":[{"expression":{"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11511:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2317,"nodeType":"ExpressionStatement","src":"11511:11:9"},{"expression":{"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11540:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2321,"nodeType":"ExpressionStatement","src":"11540:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11583:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2334,"nodeType":"IfStatement","src":"11579:64:9","trueBody":{"id":2333,"nodeType":"Block","src":"11599:44:9","statements":[{"expression":{"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2329,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11617:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2332,"nodeType":"ExpressionStatement","src":"11617:11:9"}]}}]},{"expression":{"id":2336,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"11669:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2214,"id":2337,"nodeType":"Return","src":"11662:13:9"}]},"documentation":{"id":2208,"nodeType":"StructuredDocumentation","src":"10575:119:9","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:9","parameters":{"id":2211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2210,"mutability":"mutable","name":"value","nameLocation":"10721:5:9","nodeType":"VariableDeclaration","scope":2339,"src":"10713:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:9"},"returnParameters":{"id":2214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2339,"src":"10751:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2374,"nodeType":"FunctionDefinition","src":"11835:248:9","nodes":[],"body":{"id":2373,"nodeType":"Block","src":"11915:168:9","nodes":[],"statements":[{"id":2372,"nodeType":"UncheckedBlock","src":"11925:152:9","statements":[{"assignments":[2351],"declarations":[{"constant":false,"id":2351,"mutability":"mutable","name":"result","nameLocation":"11957:6:9","nodeType":"VariableDeclaration","scope":2372,"src":"11949:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2355,"initialValue":{"arguments":[{"id":2353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"11971:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2352,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2339,2374],"referencedDeclaration":2339,"src":"11966:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2356,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"11998:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2358,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2345,"src":"12025:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2357,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"12008:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2361,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"12043:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"12052:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:9","trueExpression":{"hexValue":"31","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2349,"id":2371,"nodeType":"Return","src":"11991:75:9"}]}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"11688:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:9","parameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"value","nameLocation":"11857:5:9","nodeType":"VariableDeclaration","scope":2374,"src":"11849:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2341,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2345,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:9","nodeType":"VariableDeclaration","scope":2374,"src":"11864:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2344,"nodeType":"UserDefinedTypeName","pathNode":{"id":2343,"name":"Rounding","nameLocations":["11864:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"11864:8:9"},"referencedDeclaration":1640,"src":"11864:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:9"},"returnParameters":{"id":2349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"11906:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2347,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2503,"nodeType":"FunctionDefinition","src":"12214:916:9","nodes":[],"body":{"id":2502,"nodeType":"Block","src":"12276:854:9","nodes":[],"statements":[{"assignments":[2383],"declarations":[{"constant":false,"id":2383,"mutability":"mutable","name":"result","nameLocation":"12294:6:9","nodeType":"VariableDeclaration","scope":2502,"src":"12286:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2382,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2385,"initialValue":{"hexValue":"30","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:9"},{"id":2499,"nodeType":"UncheckedBlock","src":"12314:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12342:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2402,"nodeType":"IfStatement","src":"12338:103:9","trueBody":{"id":2401,"nodeType":"Block","src":"12361:80:9","statements":[{"expression":{"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12379:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2396,"nodeType":"ExpressionStatement","src":"12379:17:9"},{"expression":{"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2397,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12414:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2400,"nodeType":"ExpressionStatement","src":"12414:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12458:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2419,"nodeType":"IfStatement","src":"12454:103:9","trueBody":{"id":2418,"nodeType":"Block","src":"12477:80:9","statements":[{"expression":{"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12495:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2413,"nodeType":"ExpressionStatement","src":"12495:17:9"},{"expression":{"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2414,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12530:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2417,"nodeType":"ExpressionStatement","src":"12530:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12574:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2436,"nodeType":"IfStatement","src":"12570:103:9","trueBody":{"id":2435,"nodeType":"Block","src":"12593:80:9","statements":[{"expression":{"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12611:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2430,"nodeType":"ExpressionStatement","src":"12611:17:9"},{"expression":{"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12646:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2434,"nodeType":"ExpressionStatement","src":"12646:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12690:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2453,"nodeType":"IfStatement","src":"12686:100:9","trueBody":{"id":2452,"nodeType":"Block","src":"12708:78:9","statements":[{"expression":{"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12726:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2447,"nodeType":"ExpressionStatement","src":"12726:16:9"},{"expression":{"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12760:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2451,"nodeType":"ExpressionStatement","src":"12760:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12803:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"IfStatement","src":"12799:100:9","trueBody":{"id":2469,"nodeType":"Block","src":"12821:78:9","statements":[{"expression":{"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12839:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2464,"nodeType":"ExpressionStatement","src":"12839:16:9"},{"expression":{"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12873:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2468,"nodeType":"ExpressionStatement","src":"12873:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2487,"nodeType":"IfStatement","src":"12912:100:9","trueBody":{"id":2486,"nodeType":"Block","src":"12934:78:9","statements":[{"expression":{"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"12952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2481,"nodeType":"ExpressionStatement","src":"12952:16:9"},{"expression":{"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"12986:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2485,"nodeType":"ExpressionStatement","src":"12986:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"13029:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2498,"nodeType":"IfStatement","src":"13025:66:9","trueBody":{"id":2497,"nodeType":"Block","src":"13047:44:9","statements":[{"expression":{"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2493,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"13065:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2496,"nodeType":"ExpressionStatement","src":"13065:11:9"}]}}]},{"expression":{"id":2500,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"13117:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2381,"id":2501,"nodeType":"Return","src":"13110:13:9"}]},"documentation":{"id":2375,"nodeType":"StructuredDocumentation","src":"12089:120:9","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:9","parameters":{"id":2378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"value","nameLocation":"12237:5:9","nodeType":"VariableDeclaration","scope":2503,"src":"12229:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2376,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:9"},"returnParameters":{"id":2381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2503,"src":"12267:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2538,"nodeType":"FunctionDefinition","src":"13284:251:9","nodes":[],"body":{"id":2537,"nodeType":"Block","src":"13365:170:9","nodes":[],"statements":[{"id":2536,"nodeType":"UncheckedBlock","src":"13375:154:9","statements":[{"assignments":[2515],"declarations":[{"constant":false,"id":2515,"mutability":"mutable","name":"result","nameLocation":"13407:6:9","nodeType":"VariableDeclaration","scope":2536,"src":"13399:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2514,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2519,"initialValue":{"arguments":[{"id":2517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"13422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2516,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2503,2538],"referencedDeclaration":2503,"src":"13416:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2520,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13449:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2522,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2509,"src":"13476:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2521,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"13459:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2525,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13495:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"13504:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:9","trueExpression":{"hexValue":"31","id":2530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2533,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2513,"id":2535,"nodeType":"Return","src":"13442:76:9"}]}]},"documentation":{"id":2504,"nodeType":"StructuredDocumentation","src":"13136:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:9","parameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2506,"mutability":"mutable","name":"value","nameLocation":"13307:5:9","nodeType":"VariableDeclaration","scope":2538,"src":"13299:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2505,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2509,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:9","nodeType":"VariableDeclaration","scope":2538,"src":"13314:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2508,"nodeType":"UserDefinedTypeName","pathNode":{"id":2507,"name":"Rounding","nameLocations":["13314:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"13314:8:9"},"referencedDeclaration":1640,"src":"13314:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:9"},"returnParameters":{"id":2513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2538,"src":"13356:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2511,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2625,"nodeType":"FunctionDefinition","src":"13792:663:9","nodes":[],"body":{"id":2624,"nodeType":"Block","src":"13855:600:9","nodes":[],"statements":[{"assignments":[2547],"declarations":[{"constant":false,"id":2547,"mutability":"mutable","name":"result","nameLocation":"13873:6:9","nodeType":"VariableDeclaration","scope":2624,"src":"13865:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2549,"initialValue":{"hexValue":"30","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:9"},{"id":2621,"nodeType":"UncheckedBlock","src":"13893:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"13921:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2564,"nodeType":"IfStatement","src":"13917:98:9","trueBody":{"id":2563,"nodeType":"Block","src":"13939:76:9","statements":[{"expression":{"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"13957:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2558,"nodeType":"ExpressionStatement","src":"13957:13:9"},{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"13988:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2562,"nodeType":"ExpressionStatement","src":"13988:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14032:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2579,"nodeType":"IfStatement","src":"14028:95:9","trueBody":{"id":2578,"nodeType":"Block","src":"14049:74:9","statements":[{"expression":{"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2573,"nodeType":"ExpressionStatement","src":"14067:12:9"},{"expression":{"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2574,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2577,"nodeType":"ExpressionStatement","src":"14097:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14140:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2594,"nodeType":"IfStatement","src":"14136:95:9","trueBody":{"id":2593,"nodeType":"Block","src":"14157:74:9","statements":[{"expression":{"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2588,"nodeType":"ExpressionStatement","src":"14175:12:9"},{"expression":{"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2589,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14205:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2592,"nodeType":"ExpressionStatement","src":"14205:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14248:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2609,"nodeType":"IfStatement","src":"14244:95:9","trueBody":{"id":2608,"nodeType":"Block","src":"14265:74:9","statements":[{"expression":{"id":2602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2603,"nodeType":"ExpressionStatement","src":"14283:12:9"},{"expression":{"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2604,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14313:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2607,"nodeType":"ExpressionStatement","src":"14313:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"14356:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2620,"nodeType":"IfStatement","src":"14352:64:9","trueBody":{"id":2619,"nodeType":"Block","src":"14372:44:9","statements":[{"expression":{"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2615,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14390:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2618,"nodeType":"ExpressionStatement","src":"14390:11:9"}]}}]},{"expression":{"id":2622,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2547,"src":"14442:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2545,"id":2623,"nodeType":"Return","src":"14435:13:9"}]},"documentation":{"id":2539,"nodeType":"StructuredDocumentation","src":"13541:246:9","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:9","parameters":{"id":2542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"value","nameLocation":"13816:5:9","nodeType":"VariableDeclaration","scope":2625,"src":"13808:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:9"},"returnParameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2625,"src":"13846:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2543,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2663,"nodeType":"FunctionDefinition","src":"14610:259:9","nodes":[],"body":{"id":2662,"nodeType":"Block","src":"14692:177:9","nodes":[],"statements":[{"id":2661,"nodeType":"UncheckedBlock","src":"14702:161:9","statements":[{"assignments":[2637],"declarations":[{"constant":false,"id":2637,"mutability":"mutable","name":"result","nameLocation":"14734:6:9","nodeType":"VariableDeclaration","scope":2661,"src":"14726:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2636,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2641,"initialValue":{"arguments":[{"id":2639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"14750:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2638,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2625,2663],"referencedDeclaration":2625,"src":"14743:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2642,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"14777:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2644,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"14804:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2643,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"14787:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1640_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"14823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"14838:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:9","trueExpression":{"hexValue":"31","id":2655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2658,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2635,"id":2660,"nodeType":"Return","src":"14770:82:9"}]}]},"documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"14461:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:9","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"value","nameLocation":"14634:5:9","nodeType":"VariableDeclaration","scope":2663,"src":"14626:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2627,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:9","nodeType":"VariableDeclaration","scope":2663,"src":"14641:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2630,"nodeType":"UserDefinedTypeName","pathNode":{"id":2629,"name":"Rounding","nameLocations":["14641:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"14641:8:9"},"referencedDeclaration":1640,"src":"14641:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:9"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2663,"src":"14683:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2633,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2682,"nodeType":"FunctionDefinition","src":"14993:122:9","nodes":[],"body":{"id":2681,"nodeType":"Block","src":"15067:48:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2674,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"15090:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}],"id":2673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2672,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:9","typeDescriptions":{}}},"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2671,"id":2680,"nodeType":"Return","src":"15077:31:9"}]},"documentation":{"id":2664,"nodeType":"StructuredDocumentation","src":"14875:113:9","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:9","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:9","nodeType":"VariableDeclaration","scope":2682,"src":"15019:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"},"typeName":{"id":2666,"nodeType":"UserDefinedTypeName","pathNode":{"id":2665,"name":"Rounding","nameLocations":["15019:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"15019:8:9"},"referencedDeclaration":1640,"src":"15019:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1640","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:9"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2682,"src":"15061:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2669,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:9"},"scope":2683,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1632,"nodeType":"StructuredDocumentation","src":"129:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[2683],"name":"Math","nameLocation":"211:4:9","scope":2684,"usedErrors":[1635],"usedEvents":[]}],"license":"MIT"},"id":9} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json deleted file mode 100644 index 7862c13..0000000 --- a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Context.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MotemaPool_flattened.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MotemaPool_flattened.sol\":{\"keccak256\":\"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947\",\"dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MotemaPool_flattened.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"src/MotemaPool_flattened.sol":{"keccak256":"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445","urls":["bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947","dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MotemaPool_flattened.sol","id":224,"exportedSymbols":{"Context":[29],"MotemaPool":[223],"Ownable":[174]},"nodeType":"SourceUnit","src":"161:4432:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"161:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":29,"nodeType":"ContractDefinition","src":"684:338:0","nodes":[{"id":11,"nodeType":"FunctionDefinition","src":"716:96:0","nodes":[],"body":{"id":10,"nodeType":"Block","src":"778:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":7,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"795:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"799:6:0","memberName":"sender","nodeType":"MemberAccess","src":"795:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6,"id":9,"nodeType":"Return","src":"788:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"725:10:0","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"735:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"769:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"768:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":20,"nodeType":"FunctionDefinition","src":"818:99:0","nodes":[],"body":{"id":19,"nodeType":"Block","src":"885:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":16,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"902:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"906:4:0","memberName":"data","nodeType":"MemberAccess","src":"902:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":15,"id":18,"nodeType":"Return","src":"895:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"827:8:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"835:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"869:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"868:16:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":28,"nodeType":"FunctionDefinition","src":"923:97:0","nodes":[],"body":{"id":27,"nodeType":"Block","src":"995:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24,"id":26,"nodeType":"Return","src":"1005:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"932:20:0","parameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"952:2:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"986:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"187:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[29],"name":"Context","nameLocation":"702:7:0","scope":224,"usedErrors":[],"usedEvents":[]},{"id":30,"nodeType":"PragmaDirective","src":"1148:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":174,"nodeType":"ContractDefinition","src":"1663:2438:0","nodes":[{"id":35,"nodeType":"VariableDeclaration","src":"1706:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1722:6:0","scope":174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":40,"nodeType":"ErrorDefinition","src":"1825:50:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1831:26:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"account","nameLocation":"1866:7:0","nodeType":"VariableDeclaration","scope":40,"src":"1858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1857:17:0"}},{"id":45,"nodeType":"ErrorDefinition","src":"1968:41:0","nodes":[],"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1974:19:0","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"owner","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":45,"src":"1994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1993:15:0"}},{"id":51,"nodeType":"EventDefinition","src":"2015:84:0","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"2021:20:0","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"2058:13:0","nodeType":"VariableDeclaration","scope":51,"src":"2042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"2089:8:0","nodeType":"VariableDeclaration","scope":51,"src":"2073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:57:0"}},{"id":77,"nodeType":"FunctionDefinition","src":"2225:187:0","nodes":[],"body":{"id":76,"nodeType":"Block","src":"2259:153:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":57,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{}}},"id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71,"nodeType":"IfStatement","src":"2269:95:0","trueBody":{"id":70,"nodeType":"Block","src":"2301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":66,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":65,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":63,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"2322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69,"nodeType":"RevertStatement","src":"2315:38:0"}]}},{"expression":{"arguments":[{"id":73,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":72,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"2373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"2373:32:0"}]},"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"2105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"initialOwner","nameLocation":"2245:12:0","nodeType":"VariableDeclaration","scope":77,"src":"2237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2236:22:0"},"returnParameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2259:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":85,"nodeType":"ModifierDefinition","src":"2500:62:0","nodes":[],"body":{"id":84,"nodeType":"Block","src":"2521:41:0","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"ExpressionStatement","src":"2531:13:0"},{"id":83,"nodeType":"PlaceholderStatement","src":"2554:1:0"}]},"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2418:77:0","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2509:9:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"2518:2:0"},"virtual":false,"visibility":"internal"},{"id":94,"nodeType":"FunctionDefinition","src":"2638:85:0","nodes":[],"body":{"id":93,"nodeType":"Block","src":"2693:30:0","nodes":[],"statements":[{"expression":{"id":91,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90,"id":92,"nodeType":"Return","src":"2703:13:0"}]},"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2647:5:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"2652:2:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"2684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2683:9:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":111,"nodeType":"FunctionDefinition","src":"2796:162:0","nodes":[],"body":{"id":110,"nodeType":"Block","src":"2841:117:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":100,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2851:101:0","trueBody":{"id":108,"nodeType":"Block","src":"2880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":103,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"RevertStatement","src":"2894:47:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"2729:62:0","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2805:11:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2816:2:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"2841:0:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":125,"nodeType":"FunctionDefinition","src":"3293:101:0","nodes":[],"body":{"id":124,"nodeType":"Block","src":"3347:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3376:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":117,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"ExpressionStatement","src":"3357:30:0"}]},"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"2964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":115,"kind":"modifierInvocation","modifierName":{"id":114,"name":"onlyOwner","nameLocations":["3337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3337:9:0"},"nodeType":"ModifierInvocation","src":"3337:9:0"}],"name":"renounceOwnership","nameLocation":"3302:17:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"3319:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"3347:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":153,"nodeType":"FunctionDefinition","src":"3543:215:0","nodes":[],"body":{"id":152,"nodeType":"Block","src":"3613:145:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"3623:91:0","trueBody":{"id":146,"nodeType":"Block","src":"3651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:0","typeDescriptions":{}}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"3672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"RevertStatement","src":"3665:38:0"}]}},{"expression":{"arguments":[{"id":149,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":148,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"3723:28:0"}]},"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"3400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":131,"kind":"modifierInvocation","modifierName":{"id":130,"name":"onlyOwner","nameLocations":["3603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3603:9:0"},"nodeType":"ModifierInvocation","src":"3603:9:0"}],"name":"transferOwnership","nameLocation":"3552:17:0","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"newOwner","nameLocation":"3578:8:0","nodeType":"VariableDeclaration","scope":153,"src":"3570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:18:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"3613:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":173,"nodeType":"FunctionDefinition","src":"3912:187:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"3975:124:0","nodes":[],"statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"oldOwner","nameLocation":"3993:8:0","nodeType":"VariableDeclaration","scope":172,"src":"3985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":162,"initialValue":{"id":161,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3985:25:0"},{"expression":{"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":163,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":164,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":166,"nodeType":"ExpressionStatement","src":"4020:17:0"},{"eventCall":{"arguments":[{"id":168,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":169,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":167,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"4052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":171,"nodeType":"EmitStatement","src":"4047:45:0"}]},"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"3764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3921:18:0","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"newOwner","nameLocation":"3948:8:0","nodeType":"VariableDeclaration","scope":173,"src":"3940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3939:18:0"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"3975:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":32,"name":"Context","nameLocations":["1692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":29,"src":"1692:7:0"},"id":33,"nodeType":"InheritanceSpecifier","src":"1692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[174,29],"name":"Ownable","nameLocation":"1681:7:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]},{"id":175,"nodeType":"PragmaDirective","src":"4129:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":223,"nodeType":"ContractDefinition","src":"4155:438:0","nodes":[{"id":180,"nodeType":"VariableDeclaration","src":"4192:55:0","nodes":[],"constant":true,"functionSelector":"84860633","mutability":"constant","name":"WITHDRAWAL_AMOUNT","nameLocation":"4216:17:0","scope":223,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4192:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:11:0","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":188,"nodeType":"FunctionDefinition","src":"4254:36:0","nodes":[],"body":{"id":187,"nodeType":"Block","src":"4288:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4276:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":185,"kind":"baseConstructorSpecifier","modifierName":{"id":182,"name":"Ownable","nameLocations":["4268:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4268:7:0"},"nodeType":"ModifierInvocation","src":"4268:19:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"4265:2:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"4288:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"4296:29:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"4323:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4303:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"4323:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":196,"nodeType":"FunctionDefinition","src":"4331:30:0","nodes":[],"body":{"id":195,"nodeType":"Block","src":"4359:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"4339:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"4359:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":210,"nodeType":"FunctionDefinition","src":"4367:113:0","nodes":[],"body":{"id":209,"nodeType":"Block","src":"4426:54:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"WITHDRAWAL_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4455:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":203,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4436:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4446:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"4436:18:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"4436:37:0"}]},"functionSelector":"1e83409a","implemented":true,"kind":"function","modifiers":[{"id":201,"kind":"modifierInvocation","modifierName":{"id":200,"name":"onlyOwner","nameLocations":["4416:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"4416:9:0"},"nodeType":"ModifierInvocation","src":"4416:9:0"}],"name":"claim","nameLocation":"4376:5:0","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"recipient","nameLocation":"4398:9:0","nodeType":"VariableDeclaration","scope":210,"src":"4382:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"4382:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"4381:27:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"4426:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":222,"nodeType":"FunctionDefinition","src":"4486:105:0","nodes":[],"body":{"id":221,"nodeType":"Block","src":"4546:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4571:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}],"id":216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"4563:7:0","typeDescriptions":{}}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4577:7:0","memberName":"balance","nodeType":"MemberAccess","src":"4563:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":214,"id":220,"nodeType":"Return","src":"4556:28:0"}]},"functionSelector":"6f9fb98a","implemented":true,"kind":"function","modifiers":[],"name":"getContractBalance","nameLocation":"4495:18:0","parameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"4513:2:0"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"4537:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4536:9:0"},"scope":223,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":176,"name":"Ownable","nameLocations":["4178:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4178:7:0"},"id":177,"nodeType":"InheritanceSpecifier","src":"4178:7:0"}],"canonicalName":"MotemaPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[223,174,29],"name":"MotemaPool","nameLocation":"4164:10:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]}],"license":"UNLICENSED"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json deleted file mode 100644 index 028cb38..0000000 --- a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/MotemaPool.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"WITHDRAWAL_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[{"name":"recipient","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getContractBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6102a0806100a56000396000f3fe6080604052600436106100565760003560e01c80631e83409a1461005f5780636f9fb98a1461007f578063715018a6146100a157806384860633146100b65780638da5cb5b146100d1578063f2fde38b146100f957005b3661005d57005b005b34801561006b57600080fd5b5061005d61007a366004610246565b610119565b34801561008b57600080fd5b50475b6040519081526020015b60405180910390f35b3480156100ad57600080fd5b5061005d61015d565b3480156100c257600080fd5b5061008e6611c37937e0800081565b3480156100dd57600080fd5b506000546040516001600160a01b039091168152602001610098565b34801561010557600080fd5b5061005d610114366004610246565b610171565b6101216101b4565b6040516001600160a01b038216906000906611c37937e080009082818181858883f19350505050158015610159573d6000803e3d6000fd5b5050565b6101656101b4565b61016f60006101e1565b565b6101796101b4565b6001600160a01b0381166101a857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101b1816101e1565b50565b6000546001600160a01b0316331461016f5760405163118cdaa760e01b815233600482015260240161019f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101b157600080fd5b60006020828403121561025857600080fd5b813561026381610231565b939250505056fea26469706673582212201958c09198ba31584011a811d739e33994c528777a1fbf62c7a7a0f79d6f3cbf64736f6c63430008180033","sourceMap":"4155:438:0:-:0;;;4254:36;;;;;;;;;-1:-1:-1;4276:10:0;;2269:95;;2322:31;;-1:-1:-1;;;2322:31:0;;2350:1;2322:31;;;160:51:1;133:18;;2322:31:0;;;;;;;2269:95;2373:32;2392:12;2373:18;:32::i;:::-;2225:187;4155:438;;3912:187;3985:16;4004:6;;-1:-1:-1;;;;;4020:17:0;;;-1:-1:-1;;;;;;4020:17:0;;;;;;4052:40;;4004:6;;;;;;;4052:40;;3985:16;4052:40;3975:124;3912:187;:::o;14:203:1:-;4155:438:0;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100565760003560e01c80631e83409a1461005f5780636f9fb98a1461007f578063715018a6146100a157806384860633146100b65780638da5cb5b146100d1578063f2fde38b146100f957005b3661005d57005b005b34801561006b57600080fd5b5061005d61007a366004610246565b610119565b34801561008b57600080fd5b50475b6040519081526020015b60405180910390f35b3480156100ad57600080fd5b5061005d61015d565b3480156100c257600080fd5b5061008e6611c37937e0800081565b3480156100dd57600080fd5b506000546040516001600160a01b039091168152602001610098565b34801561010557600080fd5b5061005d610114366004610246565b610171565b6101216101b4565b6040516001600160a01b038216906000906611c37937e080009082818181858883f19350505050158015610159573d6000803e3d6000fd5b5050565b6101656101b4565b61016f60006101e1565b565b6101796101b4565b6001600160a01b0381166101a857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101b1816101e1565b50565b6000546001600160a01b0316331461016f5760405163118cdaa760e01b815233600482015260240161019f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101b157600080fd5b60006020828403121561025857600080fd5b813561026381610231565b939250505056fea26469706673582212201958c09198ba31584011a811d739e33994c528777a1fbf62c7a7a0f79d6f3cbf64736f6c63430008180033","sourceMap":"4155:438:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4367:113;;;;;;;;;;-1:-1:-1;4367:113:0;;;;;:::i;:::-;;:::i;4486:105::-;;;;;;;;;;-1:-1:-1;4563:21:0;4486:105;;;572:25:1;;;560:2;545:18;4486:105:0;;;;;;;;3293:101;;;;;;;;;;;;;:::i;4192:55::-;;;;;;;;;;;;4236:11;4192:55;;2638:85;;;;;;;;;;-1:-1:-1;2684:7:0;2710:6;2638:85;;-1:-1:-1;;;;;2710:6:0;;;754:51:1;;742:2;727:18;2638:85:0;608:203:1;3543:215:0;;;;;;;;;;-1:-1:-1;3543:215:0;;;;;:::i;:::-;;:::i;4367:113::-;2531:13;:11;:13::i;:::-;4436:37:::1;::::0;-1:-1:-1;;;;;4436:18:0;::::1;::::0;:37;;4236:11:::1;::::0;4436:37;;;;4236:11;4436:18;:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;4367:113:::0;:::o;3293:101::-;2531:13;:11;:13::i;:::-;3357:30:::1;3384:1;3357:18;:30::i;:::-;3293:101::o:0;3543:215::-;2531:13;:11;:13::i;:::-;-1:-1:-1;;;;;3627:22:0;::::1;3623:91;;3672:31;::::0;-1:-1:-1;;;3672:31:0;;3700:1:::1;3672:31;::::0;::::1;754:51:1::0;727:18;;3672:31:0::1;;;;;;;;3623:91;3723:28;3742:8;3723:18;:28::i;:::-;3543:215:::0;:::o;2796:162::-;2684:7;2710:6;-1:-1:-1;;;;;2710:6:0;795:10;2855:23;2851:101;;2901:40;;-1:-1:-1;;;2901:40:0;;795:10;2901:40;;;754:51:1;727:18;;2901:40:0;608:203:1;3912:187:0;3985:16;4004:6;;-1:-1:-1;;;;;4020:17:0;;;-1:-1:-1;;;;;;4020:17:0;;;;;;4052:40;;4004:6;;;;;;;4052:40;;3985:16;4052:40;3975:124;3912:187;:::o;14:139:1:-;-1:-1:-1;;;;;97:31:1;;87:42;;77:70;;143:1;140;133:12;158:263;225:6;278:2;266:9;257:7;253:23;249:32;246:52;;;294:1;291;284:12;246:52;333:9;320:23;352:39;385:5;352:39;:::i;:::-;410:5;158:263;-1:-1:-1;;;158:263:1:o","linkReferences":{}},"methodIdentifiers":{"WITHDRAWAL_AMOUNT()":"84860633","claim(address)":"1e83409a","getContractBalance()":"6f9fb98a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"WITHDRAWAL_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getContractBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MotemaPool_flattened.sol\":\"MotemaPool\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MotemaPool_flattened.sol\":{\"keccak256\":\"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947\",\"dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"WITHDRAWAL_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claim"},{"inputs":[],"stateMutability":"view","type":"function","name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MotemaPool_flattened.sol":"MotemaPool"},"evmVersion":"paris","libraries":{}},"sources":{"src/MotemaPool_flattened.sol":{"keccak256":"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445","urls":["bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947","dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MotemaPool_flattened.sol","id":224,"exportedSymbols":{"Context":[29],"MotemaPool":[223],"Ownable":[174]},"nodeType":"SourceUnit","src":"161:4432:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"161:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":29,"nodeType":"ContractDefinition","src":"684:338:0","nodes":[{"id":11,"nodeType":"FunctionDefinition","src":"716:96:0","nodes":[],"body":{"id":10,"nodeType":"Block","src":"778:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":7,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"795:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"799:6:0","memberName":"sender","nodeType":"MemberAccess","src":"795:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6,"id":9,"nodeType":"Return","src":"788:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"725:10:0","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"735:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"769:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"768:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":20,"nodeType":"FunctionDefinition","src":"818:99:0","nodes":[],"body":{"id":19,"nodeType":"Block","src":"885:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":16,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"902:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"906:4:0","memberName":"data","nodeType":"MemberAccess","src":"902:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":15,"id":18,"nodeType":"Return","src":"895:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"827:8:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"835:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"869:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"868:16:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":28,"nodeType":"FunctionDefinition","src":"923:97:0","nodes":[],"body":{"id":27,"nodeType":"Block","src":"995:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24,"id":26,"nodeType":"Return","src":"1005:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"932:20:0","parameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"952:2:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"986:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"187:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[29],"name":"Context","nameLocation":"702:7:0","scope":224,"usedErrors":[],"usedEvents":[]},{"id":30,"nodeType":"PragmaDirective","src":"1148:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":174,"nodeType":"ContractDefinition","src":"1663:2438:0","nodes":[{"id":35,"nodeType":"VariableDeclaration","src":"1706:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1722:6:0","scope":174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":40,"nodeType":"ErrorDefinition","src":"1825:50:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1831:26:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"account","nameLocation":"1866:7:0","nodeType":"VariableDeclaration","scope":40,"src":"1858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1857:17:0"}},{"id":45,"nodeType":"ErrorDefinition","src":"1968:41:0","nodes":[],"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1974:19:0","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"owner","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":45,"src":"1994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1993:15:0"}},{"id":51,"nodeType":"EventDefinition","src":"2015:84:0","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"2021:20:0","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"2058:13:0","nodeType":"VariableDeclaration","scope":51,"src":"2042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"2089:8:0","nodeType":"VariableDeclaration","scope":51,"src":"2073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:57:0"}},{"id":77,"nodeType":"FunctionDefinition","src":"2225:187:0","nodes":[],"body":{"id":76,"nodeType":"Block","src":"2259:153:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":57,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{}}},"id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71,"nodeType":"IfStatement","src":"2269:95:0","trueBody":{"id":70,"nodeType":"Block","src":"2301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":66,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":65,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":63,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"2322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69,"nodeType":"RevertStatement","src":"2315:38:0"}]}},{"expression":{"arguments":[{"id":73,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":72,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"2373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"2373:32:0"}]},"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"2105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"initialOwner","nameLocation":"2245:12:0","nodeType":"VariableDeclaration","scope":77,"src":"2237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2236:22:0"},"returnParameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2259:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":85,"nodeType":"ModifierDefinition","src":"2500:62:0","nodes":[],"body":{"id":84,"nodeType":"Block","src":"2521:41:0","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"ExpressionStatement","src":"2531:13:0"},{"id":83,"nodeType":"PlaceholderStatement","src":"2554:1:0"}]},"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2418:77:0","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2509:9:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"2518:2:0"},"virtual":false,"visibility":"internal"},{"id":94,"nodeType":"FunctionDefinition","src":"2638:85:0","nodes":[],"body":{"id":93,"nodeType":"Block","src":"2693:30:0","nodes":[],"statements":[{"expression":{"id":91,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90,"id":92,"nodeType":"Return","src":"2703:13:0"}]},"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2647:5:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"2652:2:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"2684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2683:9:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":111,"nodeType":"FunctionDefinition","src":"2796:162:0","nodes":[],"body":{"id":110,"nodeType":"Block","src":"2841:117:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":100,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2851:101:0","trueBody":{"id":108,"nodeType":"Block","src":"2880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":103,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"RevertStatement","src":"2894:47:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"2729:62:0","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2805:11:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2816:2:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"2841:0:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":125,"nodeType":"FunctionDefinition","src":"3293:101:0","nodes":[],"body":{"id":124,"nodeType":"Block","src":"3347:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3376:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":117,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"ExpressionStatement","src":"3357:30:0"}]},"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"2964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":115,"kind":"modifierInvocation","modifierName":{"id":114,"name":"onlyOwner","nameLocations":["3337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3337:9:0"},"nodeType":"ModifierInvocation","src":"3337:9:0"}],"name":"renounceOwnership","nameLocation":"3302:17:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"3319:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"3347:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":153,"nodeType":"FunctionDefinition","src":"3543:215:0","nodes":[],"body":{"id":152,"nodeType":"Block","src":"3613:145:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"3623:91:0","trueBody":{"id":146,"nodeType":"Block","src":"3651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:0","typeDescriptions":{}}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"3672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"RevertStatement","src":"3665:38:0"}]}},{"expression":{"arguments":[{"id":149,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":148,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"3723:28:0"}]},"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"3400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":131,"kind":"modifierInvocation","modifierName":{"id":130,"name":"onlyOwner","nameLocations":["3603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3603:9:0"},"nodeType":"ModifierInvocation","src":"3603:9:0"}],"name":"transferOwnership","nameLocation":"3552:17:0","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"newOwner","nameLocation":"3578:8:0","nodeType":"VariableDeclaration","scope":153,"src":"3570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:18:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"3613:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":173,"nodeType":"FunctionDefinition","src":"3912:187:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"3975:124:0","nodes":[],"statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"oldOwner","nameLocation":"3993:8:0","nodeType":"VariableDeclaration","scope":172,"src":"3985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":162,"initialValue":{"id":161,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3985:25:0"},{"expression":{"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":163,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":164,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":166,"nodeType":"ExpressionStatement","src":"4020:17:0"},{"eventCall":{"arguments":[{"id":168,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":169,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":167,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"4052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":171,"nodeType":"EmitStatement","src":"4047:45:0"}]},"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"3764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3921:18:0","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"newOwner","nameLocation":"3948:8:0","nodeType":"VariableDeclaration","scope":173,"src":"3940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3939:18:0"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"3975:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":32,"name":"Context","nameLocations":["1692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":29,"src":"1692:7:0"},"id":33,"nodeType":"InheritanceSpecifier","src":"1692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[174,29],"name":"Ownable","nameLocation":"1681:7:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]},{"id":175,"nodeType":"PragmaDirective","src":"4129:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":223,"nodeType":"ContractDefinition","src":"4155:438:0","nodes":[{"id":180,"nodeType":"VariableDeclaration","src":"4192:55:0","nodes":[],"constant":true,"functionSelector":"84860633","mutability":"constant","name":"WITHDRAWAL_AMOUNT","nameLocation":"4216:17:0","scope":223,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4192:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:11:0","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":188,"nodeType":"FunctionDefinition","src":"4254:36:0","nodes":[],"body":{"id":187,"nodeType":"Block","src":"4288:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4276:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":185,"kind":"baseConstructorSpecifier","modifierName":{"id":182,"name":"Ownable","nameLocations":["4268:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4268:7:0"},"nodeType":"ModifierInvocation","src":"4268:19:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"4265:2:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"4288:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"4296:29:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"4323:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4303:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"4323:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":196,"nodeType":"FunctionDefinition","src":"4331:30:0","nodes":[],"body":{"id":195,"nodeType":"Block","src":"4359:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"4339:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"4359:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":210,"nodeType":"FunctionDefinition","src":"4367:113:0","nodes":[],"body":{"id":209,"nodeType":"Block","src":"4426:54:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"WITHDRAWAL_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4455:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":203,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4436:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4446:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"4436:18:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"4436:37:0"}]},"functionSelector":"1e83409a","implemented":true,"kind":"function","modifiers":[{"id":201,"kind":"modifierInvocation","modifierName":{"id":200,"name":"onlyOwner","nameLocations":["4416:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"4416:9:0"},"nodeType":"ModifierInvocation","src":"4416:9:0"}],"name":"claim","nameLocation":"4376:5:0","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"recipient","nameLocation":"4398:9:0","nodeType":"VariableDeclaration","scope":210,"src":"4382:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"4382:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"4381:27:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"4426:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":222,"nodeType":"FunctionDefinition","src":"4486:105:0","nodes":[],"body":{"id":221,"nodeType":"Block","src":"4546:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4571:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}],"id":216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"4563:7:0","typeDescriptions":{}}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4577:7:0","memberName":"balance","nodeType":"MemberAccess","src":"4563:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":214,"id":220,"nodeType":"Return","src":"4556:28:0"}]},"functionSelector":"6f9fb98a","implemented":true,"kind":"function","modifiers":[],"name":"getContractBalance","nameLocation":"4495:18:0","parameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"4513:2:0"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"4537:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4536:9:0"},"scope":223,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":176,"name":"Ownable","nameLocations":["4178:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4178:7:0"},"id":177,"nodeType":"InheritanceSpecifier","src":"4178:7:0"}],"canonicalName":"MotemaPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[223,174,29],"name":"MotemaPool","nameLocation":"4164:10:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]}],"license":"UNLICENSED"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json b/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json deleted file mode 100644 index 772426e..0000000 --- a/examples/on-chain_mnist/contracts/out/MotemaPool_flattened.sol/Ownable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MotemaPool_flattened.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/MotemaPool_flattened.sol\":{\"keccak256\":\"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947\",\"dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MotemaPool_flattened.sol":"Ownable"},"evmVersion":"paris","libraries":{}},"sources":{"src/MotemaPool_flattened.sol":{"keccak256":"0x2c359750ef8310299fe6deaa5b7a7e8f0554f8250ce44989b30246241b6a2445","urls":["bzz-raw://8cd0fee9c28016a9593b1408f118b890a63bd0ed1dfda186de1c671677bc0947","dweb:/ipfs/QmbGc23Pij2EHygRQFqRXsbrMXSk5Hw98Hba2DqmWneh5B"],"license":"UNLICENSED"}},"version":1},"ast":{"absolutePath":"src/MotemaPool_flattened.sol","id":224,"exportedSymbols":{"Context":[29],"MotemaPool":[223],"Ownable":[174]},"nodeType":"SourceUnit","src":"161:4432:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"161:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":29,"nodeType":"ContractDefinition","src":"684:338:0","nodes":[{"id":11,"nodeType":"FunctionDefinition","src":"716:96:0","nodes":[],"body":{"id":10,"nodeType":"Block","src":"778:34:0","nodes":[],"statements":[{"expression":{"expression":{"id":7,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"795:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"799:6:0","memberName":"sender","nodeType":"MemberAccess","src":"795:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6,"id":9,"nodeType":"Return","src":"788:17:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"725:10:0","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"735:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"769:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"768:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":20,"nodeType":"FunctionDefinition","src":"818:99:0","nodes":[],"body":{"id":19,"nodeType":"Block","src":"885:32:0","nodes":[],"statements":[{"expression":{"expression":{"id":16,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"902:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"906:4:0","memberName":"data","nodeType":"MemberAccess","src":"902:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":15,"id":18,"nodeType":"Return","src":"895:15:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"827:8:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"835:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"869:14:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"868:16:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":28,"nodeType":"FunctionDefinition","src":"923:97:0","nodes":[],"body":{"id":27,"nodeType":"Block","src":"995:25:0","nodes":[],"statements":[{"expression":{"hexValue":"30","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":24,"id":26,"nodeType":"Return","src":"1005:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"932:20:0","parameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"952:2:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"986:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:0"},"scope":29,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"187:496:0","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[29],"name":"Context","nameLocation":"702:7:0","scope":224,"usedErrors":[],"usedEvents":[]},{"id":30,"nodeType":"PragmaDirective","src":"1148:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":174,"nodeType":"ContractDefinition","src":"1663:2438:0","nodes":[{"id":35,"nodeType":"VariableDeclaration","src":"1706:22:0","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"1722:6:0","scope":174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":40,"nodeType":"ErrorDefinition","src":"1825:50:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1735:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1831:26:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"account","nameLocation":"1866:7:0","nodeType":"VariableDeclaration","scope":40,"src":"1858:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1857:17:0"}},{"id":45,"nodeType":"ErrorDefinition","src":"1968:41:0","nodes":[],"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1881:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1974:19:0","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"owner","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":45,"src":"1994:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1993:15:0"}},{"id":51,"nodeType":"EventDefinition","src":"2015:84:0","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"2021:20:0","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"2058:13:0","nodeType":"VariableDeclaration","scope":51,"src":"2042:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"2089:8:0","nodeType":"VariableDeclaration","scope":51,"src":"2073:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:57:0"}},{"id":77,"nodeType":"FunctionDefinition","src":"2225:187:0","nodes":[],"body":{"id":76,"nodeType":"Block","src":"2259:153:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":57,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2273:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{}}},"id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2273:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":71,"nodeType":"IfStatement","src":"2269:95:0","trueBody":{"id":70,"nodeType":"Block","src":"2301:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":66,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":65,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":67,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":63,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"2322:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":68,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69,"nodeType":"RevertStatement","src":"2315:38:0"}]}},{"expression":{"arguments":[{"id":73,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2392:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":72,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"2373:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2373:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75,"nodeType":"ExpressionStatement","src":"2373:32:0"}]},"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"2105:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"initialOwner","nameLocation":"2245:12:0","nodeType":"VariableDeclaration","scope":77,"src":"2237:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"2237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2236:22:0"},"returnParameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2259:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":85,"nodeType":"ModifierDefinition","src":"2500:62:0","nodes":[],"body":{"id":84,"nodeType":"Block","src":"2521:41:0","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2531:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2531:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"ExpressionStatement","src":"2531:13:0"},{"id":83,"nodeType":"PlaceholderStatement","src":"2554:1:0"}]},"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2418:77:0","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2509:9:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"2518:2:0"},"virtual":false,"visibility":"internal"},{"id":94,"nodeType":"FunctionDefinition","src":"2638:85:0","nodes":[],"body":{"id":93,"nodeType":"Block","src":"2693:30:0","nodes":[],"statements":[{"expression":{"id":91,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2710:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90,"id":92,"nodeType":"Return","src":"2703:13:0"}]},"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2568:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2647:5:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"2652:2:0"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"2684:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2683:9:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":111,"nodeType":"FunctionDefinition","src":"2796:162:0","nodes":[],"body":{"id":110,"nodeType":"Block","src":"2841:117:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2855:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":100,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2851:101:0","trueBody":{"id":108,"nodeType":"Block","src":"2880:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"2928:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2928:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":103,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2901:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"RevertStatement","src":"2894:47:0"}]}}]},"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"2729:62:0","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2805:11:0","parameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2816:2:0"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"2841:0:0"},"scope":174,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":125,"nodeType":"FunctionDefinition","src":"3293:101:0","nodes":[],"body":{"id":124,"nodeType":"Block","src":"3347:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3384:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3376:7:0","typeDescriptions":{}}},"id":121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":117,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3357:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3357:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"ExpressionStatement","src":"3357:30:0"}]},"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"2964:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":115,"kind":"modifierInvocation","modifierName":{"id":114,"name":"onlyOwner","nameLocations":["3337:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3337:9:0"},"nodeType":"ModifierInvocation","src":"3337:9:0"}],"name":"renounceOwnership","nameLocation":"3302:17:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"3319:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"3347:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":153,"nodeType":"FunctionDefinition","src":"3543:215:0","nodes":[],"body":{"id":152,"nodeType":"Block","src":"3613:145:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3627:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3627:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"3623:91:0","trueBody":{"id":146,"nodeType":"Block","src":"3651:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3700:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"3692:7:0","typeDescriptions":{}}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"3672:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"RevertStatement","src":"3665:38:0"}]}},{"expression":{"arguments":[{"id":149,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"3742:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":148,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"3723:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"3723:28:0"}]},"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"3400:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":131,"kind":"modifierInvocation","modifierName":{"id":130,"name":"onlyOwner","nameLocations":["3603:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"3603:9:0"},"nodeType":"ModifierInvocation","src":"3603:9:0"}],"name":"transferOwnership","nameLocation":"3552:17:0","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"newOwner","nameLocation":"3578:8:0","nodeType":"VariableDeclaration","scope":153,"src":"3570:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:18:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"3613:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":173,"nodeType":"FunctionDefinition","src":"3912:187:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"3975:124:0","nodes":[],"statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"oldOwner","nameLocation":"3993:8:0","nodeType":"VariableDeclaration","scope":172,"src":"3985:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":162,"initialValue":{"id":161,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4004:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3985:25:0"},{"expression":{"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":163,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"4020:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":164,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4029:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4020:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":166,"nodeType":"ExpressionStatement","src":"4020:17:0"},{"eventCall":{"arguments":[{"id":168,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4073:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":169,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"4083:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":167,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"4052:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":171,"nodeType":"EmitStatement","src":"4047:45:0"}]},"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"3764:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3921:18:0","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"newOwner","nameLocation":"3948:8:0","nodeType":"VariableDeclaration","scope":173,"src":"3940:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3939:18:0"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"3975:0:0"},"scope":174,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":32,"name":"Context","nameLocations":["1692:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":29,"src":"1692:7:0"},"id":33,"nodeType":"InheritanceSpecifier","src":"1692:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1175:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[174,29],"name":"Ownable","nameLocation":"1681:7:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]},{"id":175,"nodeType":"PragmaDirective","src":"4129:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":223,"nodeType":"ContractDefinition","src":"4155:438:0","nodes":[{"id":180,"nodeType":"VariableDeclaration","src":"4192:55:0","nodes":[],"constant":true,"functionSelector":"84860633","mutability":"constant","name":"WITHDRAWAL_AMOUNT","nameLocation":"4216:17:0","scope":223,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"4192:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303035","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:11:0","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_5000000000000000_by_1","typeString":"int_const 5000000000000000"},"value":"0.005"},"visibility":"public"},{"id":188,"nodeType":"FunctionDefinition","src":"4254:36:0","nodes":[],"body":{"id":187,"nodeType":"Block","src":"4288:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4276:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4276:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":185,"kind":"baseConstructorSpecifier","modifierName":{"id":182,"name":"Ownable","nameLocations":["4268:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4268:7:0"},"nodeType":"ModifierInvocation","src":"4268:19:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"4265:2:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"4288:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"4296:29:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"4323:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"4303:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"4323:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":196,"nodeType":"FunctionDefinition","src":"4331:30:0","nodes":[],"body":{"id":195,"nodeType":"Block","src":"4359:2:0","nodes":[],"statements":[]},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"4339:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"4359:0:0"},"scope":223,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":210,"nodeType":"FunctionDefinition","src":"4367:113:0","nodes":[],"body":{"id":209,"nodeType":"Block","src":"4426:54:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"WITHDRAWAL_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4455:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":203,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4436:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4446:8:0","memberName":"transfer","nodeType":"MemberAccess","src":"4436:18:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":208,"nodeType":"ExpressionStatement","src":"4436:37:0"}]},"functionSelector":"1e83409a","implemented":true,"kind":"function","modifiers":[{"id":201,"kind":"modifierInvocation","modifierName":{"id":200,"name":"onlyOwner","nameLocations":["4416:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":85,"src":"4416:9:0"},"nodeType":"ModifierInvocation","src":"4416:9:0"}],"name":"claim","nameLocation":"4376:5:0","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"recipient","nameLocation":"4398:9:0","nodeType":"VariableDeclaration","scope":210,"src":"4382:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"4382:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"4381:27:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"4426:0:0"},"scope":223,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":222,"nodeType":"FunctionDefinition","src":"4486:105:0","nodes":[],"body":{"id":221,"nodeType":"Block","src":"4546:45:0","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4571:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MotemaPool_$223","typeString":"contract MotemaPool"}],"id":216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4563:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"4563:7:0","typeDescriptions":{}}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4563:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4577:7:0","memberName":"balance","nodeType":"MemberAccess","src":"4563:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":214,"id":220,"nodeType":"Return","src":"4556:28:0"}]},"functionSelector":"6f9fb98a","implemented":true,"kind":"function","modifiers":[],"name":"getContractBalance","nameLocation":"4495:18:0","parameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"4513:2:0"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"4537:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4536:9:0"},"scope":223,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":176,"name":"Ownable","nameLocations":["4178:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":174,"src":"4178:7:0"},"id":177,"nodeType":"InheritanceSpecifier","src":"4178:7:0"}],"canonicalName":"MotemaPool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[223,174,29],"name":"MotemaPool","nameLocation":"4164:10:0","scope":224,"usedErrors":[40,45],"usedEvents":[51]}],"license":"UNLICENSED"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json b/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json deleted file mode 100644 index 8af103c..0000000 --- a/examples/on-chain_mnist/contracts/out/SignedMath.sol/SignedMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e990105101f18a69007efc204cd518e83c746a6834b8b60848acba29717811464736f6c63430008180033","sourceMap":"216:1047:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:10;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e990105101f18a69007efc204cd518e83c746a6834b8b60848acba29717811464736f6c63430008180033","sourceMap":"216:1047:10:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","id":2789,"exportedSymbols":{"SignedMath":[2788]},"nodeType":"SourceUnit","src":"109:1155:10","nodes":[{"id":2685,"nodeType":"PragmaDirective","src":"109:24:10","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2788,"nodeType":"ContractDefinition","src":"216:1047:10","nodes":[{"id":2704,"nodeType":"FunctionDefinition","src":"312:101:10","nodes":[],"body":{"id":2703,"nodeType":"Block","src":"376:37:10","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2696,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"393:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2697,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"397:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"393:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2700,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"405:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"393:13:10","trueExpression":{"id":2699,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"401:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2695,"id":2702,"nodeType":"Return","src":"386:20:10"}]},"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"241:66:10","text":" @dev Returns the largest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"321:3:10","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"mutability":"mutable","name":"a","nameLocation":"332:1:10","nodeType":"VariableDeclaration","scope":2704,"src":"325:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"325:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"b","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2704,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2690,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"324:20:10"},"returnParameters":{"id":2695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2704,"src":"368:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2693,"name":"int256","nodeType":"ElementaryTypeName","src":"368:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"367:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2722,"nodeType":"FunctionDefinition","src":"491:101:10","nodes":[],"body":{"id":2721,"nodeType":"Block","src":"555:37:10","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2714,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"572:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2715,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"576:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"572:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2718,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"584:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"572:13:10","trueExpression":{"id":2717,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"580:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2713,"id":2720,"nodeType":"Return","src":"565:20:10"}]},"documentation":{"id":2705,"nodeType":"StructuredDocumentation","src":"419:67:10","text":" @dev Returns the smallest of two signed numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"500:3:10","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2707,"mutability":"mutable","name":"a","nameLocation":"511:1:10","nodeType":"VariableDeclaration","scope":2722,"src":"504:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2706,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2709,"mutability":"mutable","name":"b","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2722,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2722,"src":"547:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2711,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2766,"nodeType":"FunctionDefinition","src":"729:230:10","nodes":[],"body":{"id":2765,"nodeType":"Block","src":"797:162:10","nodes":[],"statements":[{"assignments":[2733],"declarations":[{"constant":false,"id":2733,"mutability":"mutable","name":"x","nameLocation":"866:1:10","nodeType":"VariableDeclaration","scope":2765,"src":"859:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2732,"name":"int256","nodeType":"ElementaryTypeName","src":"859:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2746,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2734,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"871:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2735,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"875:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2738,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"882:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2739,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"886:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"882:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"881:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"881:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2744,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"859:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2747,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"911:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2752,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"931:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2750,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:10","typeDescriptions":{}}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"923:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"916:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2748,"name":"int256","nodeType":"ElementaryTypeName","src":"916:6:10","typeDescriptions":{}}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2757,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"945:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2758,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"949:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"945:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"944:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"916:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"915:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"911:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2731,"id":2764,"nodeType":"Return","src":"904:48:10"}]},"documentation":{"id":2723,"nodeType":"StructuredDocumentation","src":"598:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"738:7:10","parameters":{"id":2728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2725,"mutability":"mutable","name":"a","nameLocation":"753:1:10","nodeType":"VariableDeclaration","scope":2766,"src":"746:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2724,"name":"int256","nodeType":"ElementaryTypeName","src":"746:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2727,"mutability":"mutable","name":"b","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2766,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2726,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"745:20:10"},"returnParameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2766,"src":"789:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2729,"name":"int256","nodeType":"ElementaryTypeName","src":"789:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"788:8:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2787,"nodeType":"FunctionDefinition","src":"1048:213:10","nodes":[],"body":{"id":2786,"nodeType":"Block","src":"1103:158:10","nodes":[],"statements":[{"id":2785,"nodeType":"UncheckedBlock","src":"1113:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2776,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1228:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1241:2:10","subExpression":{"id":2780,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1242:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1228:15:10","trueExpression":{"id":2779,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"1237:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2774,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:10","typeDescriptions":{}}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2773,"id":2784,"nodeType":"Return","src":"1213:31:10"}]}]},"documentation":{"id":2767,"nodeType":"StructuredDocumentation","src":"965:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1057:3:10","parameters":{"id":2770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2769,"mutability":"mutable","name":"n","nameLocation":"1068:1:10","nodeType":"VariableDeclaration","scope":2787,"src":"1061:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2768,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1060:10:10"},"returnParameters":{"id":2773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2787,"src":"1094:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:10"},"scope":2788,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":2686,"nodeType":"StructuredDocumentation","src":"135:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[2788],"name":"SignedMath","nameLocation":"224:10:10","scope":2789,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":10} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json b/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json deleted file mode 100644 index 9d1c462..0000000 --- a/examples/on-chain_mnist/contracts/out/Strings.sol/Strings.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220baa7f5dda1238bf9b50b5ca5c540917f2b09d0b35fad546a730befe74b593ff064736f6c63430008180033","sourceMap":"251:2847:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:6;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220baa7f5dda1238bf9b50b5ca5c540917f2b09d0b35fad546a730befe74b593ff064736f6c63430008180033","sourceMap":"251:2847:6:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","id":1594,"exportedSymbols":{"Math":[2683],"SignedMath":[2788],"Strings":[1593]},"nodeType":"SourceUnit","src":"101:2998:6","nodes":[{"id":1340,"nodeType":"PragmaDirective","src":"101:24:6","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1342,"nodeType":"ImportDirective","src":"127:37:6","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"./math/Math.sol","nameLocation":"-1:-1:-1","scope":1594,"sourceUnit":2684,"symbolAliases":[{"foreign":{"id":1341,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"135:4:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1344,"nodeType":"ImportDirective","src":"165:49:6","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","nameLocation":"-1:-1:-1","scope":1594,"sourceUnit":2789,"symbolAliases":[{"foreign":{"id":1343,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"173:10:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1593,"nodeType":"ContractDefinition","src":"251:2847:6","nodes":[{"id":1348,"nodeType":"VariableDeclaration","src":"273:56:6","nodes":[],"constant":true,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"298:10:6","scope":1593,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1346,"name":"bytes16","nodeType":"ElementaryTypeName","src":"273:7:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"id":1351,"nodeType":"VariableDeclaration","src":"335:42:6","nodes":[],"constant":true,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"358:14:6","scope":1593,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1349,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"375:2:6","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"id":1358,"nodeType":"ErrorDefinition","src":"470:66:6","nodes":[],"documentation":{"id":1352,"nodeType":"StructuredDocumentation","src":"384:81:6","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","name":"StringsInsufficientHexLength","nameLocation":"476:28:6","parameters":{"id":1357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"mutability":"mutable","name":"value","nameLocation":"513:5:6","nodeType":"VariableDeclaration","scope":1358,"src":"505:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1356,"mutability":"mutable","name":"length","nameLocation":"528:6:6","nodeType":"VariableDeclaration","scope":1358,"src":"520:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:31:6"}},{"id":1406,"nodeType":"FunctionDefinition","src":"637:698:6","nodes":[],"body":{"id":1405,"nodeType":"Block","src":"708:627:6","nodes":[],"statements":[{"id":1404,"nodeType":"UncheckedBlock","src":"718:611:6","statements":[{"assignments":[1367],"declarations":[{"constant":false,"id":1367,"mutability":"mutable","name":"length","nameLocation":"750:6:6","nodeType":"VariableDeclaration","scope":1404,"src":"742:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1366,"name":"uint256","nodeType":"ElementaryTypeName","src":"742:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1374,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"770:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1368,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"759:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2683_$","typeString":"type(library Math)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"764:5:6","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2503,"src":"759:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"759:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"742:38:6"},{"assignments":[1376],"declarations":[{"constant":false,"id":1376,"mutability":"mutable","name":"buffer","nameLocation":"808:6:6","nodeType":"VariableDeclaration","scope":1404,"src":"794:20:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1375,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1381,"initialValue":{"arguments":[{"id":1379,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"828:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"817:10:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1377,"name":"string","nodeType":"ElementaryTypeName","src":"821:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"794:41:6"},{"assignments":[1383],"declarations":[{"constant":false,"id":1383,"mutability":"mutable","name":"ptr","nameLocation":"857:3:6","nodeType":"VariableDeclaration","scope":1404,"src":"849:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1382,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1384,"nodeType":"VariableDeclarationStatement","src":"849:11:6"},{"AST":{"nativeSrc":"930:67:6","nodeType":"YulBlock","src":"930:67:6","statements":[{"nativeSrc":"948:35:6","nodeType":"YulAssignment","src":"948:35:6","value":{"arguments":[{"name":"buffer","nativeSrc":"959:6:6","nodeType":"YulIdentifier","src":"959:6:6"},{"arguments":[{"kind":"number","nativeSrc":"971:2:6","nodeType":"YulLiteral","src":"971:2:6","type":"","value":"32"},{"name":"length","nativeSrc":"975:6:6","nodeType":"YulIdentifier","src":"975:6:6"}],"functionName":{"name":"add","nativeSrc":"967:3:6","nodeType":"YulIdentifier","src":"967:3:6"},"nativeSrc":"967:15:6","nodeType":"YulFunctionCall","src":"967:15:6"}],"functionName":{"name":"add","nativeSrc":"955:3:6","nodeType":"YulIdentifier","src":"955:3:6"},"nativeSrc":"955:28:6","nodeType":"YulFunctionCall","src":"955:28:6"},"variableNames":[{"name":"ptr","nativeSrc":"948:3:6","nodeType":"YulIdentifier","src":"948:3:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1376,"isOffset":false,"isSlot":false,"src":"959:6:6","valueSize":1},{"declaration":1367,"isOffset":false,"isSlot":false,"src":"975:6:6","valueSize":1},{"declaration":1383,"isOffset":false,"isSlot":false,"src":"948:3:6","valueSize":1}],"id":1385,"nodeType":"InlineAssembly","src":"921:76:6"},{"body":{"id":1400,"nodeType":"Block","src":"1023:269:6","statements":[{"expression":{"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1041:5:6","subExpression":{"id":1387,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"1041:3:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1389,"nodeType":"ExpressionStatement","src":"1041:5:6"},{"AST":{"nativeSrc":"1124:86:6","nodeType":"YulBlock","src":"1124:86:6","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1154:3:6","nodeType":"YulIdentifier","src":"1154:3:6"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1168:5:6","nodeType":"YulIdentifier","src":"1168:5:6"},{"kind":"number","nativeSrc":"1175:2:6","nodeType":"YulLiteral","src":"1175:2:6","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1164:3:6","nodeType":"YulIdentifier","src":"1164:3:6"},"nativeSrc":"1164:14:6","nodeType":"YulFunctionCall","src":"1164:14:6"},{"name":"HEX_DIGITS","nativeSrc":"1180:10:6","nodeType":"YulIdentifier","src":"1180:10:6"}],"functionName":{"name":"byte","nativeSrc":"1159:4:6","nodeType":"YulIdentifier","src":"1159:4:6"},"nativeSrc":"1159:32:6","nodeType":"YulFunctionCall","src":"1159:32:6"}],"functionName":{"name":"mstore8","nativeSrc":"1146:7:6","nodeType":"YulIdentifier","src":"1146:7:6"},"nativeSrc":"1146:46:6","nodeType":"YulFunctionCall","src":"1146:46:6"},"nativeSrc":"1146:46:6","nodeType":"YulExpressionStatement","src":"1146:46:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1348,"isOffset":false,"isSlot":false,"src":"1180:10:6","valueSize":1},{"declaration":1383,"isOffset":false,"isSlot":false,"src":"1154:3:6","valueSize":1},{"declaration":1361,"isOffset":false,"isSlot":false,"src":"1168:5:6","valueSize":1}],"id":1390,"nodeType":"InlineAssembly","src":"1115:95:6"},{"expression":{"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"1227:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1227:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1394,"nodeType":"ExpressionStatement","src":"1227:11:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1361,"src":"1260:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1269:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1260:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1399,"nodeType":"IfStatement","src":"1256:21:6","trueBody":{"id":1398,"nodeType":"Break","src":"1272:5:6"}}]},"condition":{"hexValue":"74727565","id":1386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1401,"nodeType":"WhileStatement","src":"1010:282:6"},{"expression":{"id":1402,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"1312:6:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1365,"id":1403,"nodeType":"Return","src":"1305:13:6"}]}]},"documentation":{"id":1359,"nodeType":"StructuredDocumentation","src":"542:90:6","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"646:8:6","parameters":{"id":1362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1361,"mutability":"mutable","name":"value","nameLocation":"663:5:6","nodeType":"VariableDeclaration","scope":1406,"src":"655:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1360,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:15:6"},"returnParameters":{"id":1365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1406,"src":"693:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1363,"name":"string","nodeType":"ElementaryTypeName","src":"693:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"692:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1432,"nodeType":"FunctionDefinition","src":"1435:168:6","nodes":[],"body":{"id":1431,"nodeType":"Block","src":"1511:92:6","nodes":[],"statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"1542:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1550:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1542:9:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1560:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1542:20:6","trueExpression":{"hexValue":"2d","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1554:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"1588:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1424,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"1573:10:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$2788_$","typeString":"type(library SignedMath)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:3:6","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2787,"src":"1573:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1423,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1406,"src":"1564:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1414,"name":"string","nodeType":"ElementaryTypeName","src":"1528:6:6","typeDescriptions":{}}},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:6:6","memberName":"concat","nodeType":"MemberAccess","src":"1528:13:6","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:68:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1413,"id":1430,"nodeType":"Return","src":"1521:75:6"}]},"documentation":{"id":1407,"nodeType":"StructuredDocumentation","src":"1341:89:6","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1444:14:6","parameters":{"id":1410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1409,"mutability":"mutable","name":"value","nameLocation":"1466:5:6","nodeType":"VariableDeclaration","scope":1432,"src":"1459:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1408,"name":"int256","nodeType":"ElementaryTypeName","src":"1459:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1458:14:6"},"returnParameters":{"id":1413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1432,"src":"1496:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1411,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1452,"nodeType":"FunctionDefinition","src":"1708:174:6","nodes":[],"body":{"id":1451,"nodeType":"Block","src":"1782:100:6","nodes":[],"statements":[{"id":1450,"nodeType":"UncheckedBlock","src":"1792:84:6","statements":[{"expression":{"arguments":[{"id":1441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"1835:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"1854:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1442,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"1842:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2683_$","typeString":"type(library Math)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1847:6:6","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"1842:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1842:22:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1440,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1452,1535,1555],"referencedDeclaration":1535,"src":"1823:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1439,"id":1449,"nodeType":"Return","src":"1816:49:6"}]}]},"documentation":{"id":1433,"nodeType":"StructuredDocumentation","src":"1609:94:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1717:11:6","parameters":{"id":1436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"value","nameLocation":"1737:5:6","nodeType":"VariableDeclaration","scope":1452,"src":"1729:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:15:6"},"returnParameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1452,"src":"1767:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1437,"name":"string","nodeType":"ElementaryTypeName","src":"1767:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1535,"nodeType":"FunctionDefinition","src":"2005:525:6","nodes":[],"body":{"id":1534,"nodeType":"Block","src":"2095:435:6","nodes":[],"statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"localValue","nameLocation":"2113:10:6","nodeType":"VariableDeclaration","scope":1534,"src":"2105:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2105:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1465,"initialValue":{"id":1464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2126:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2105:26:6"},{"assignments":[1467],"declarations":[{"constant":false,"id":1467,"mutability":"mutable","name":"buffer","nameLocation":"2154:6:6","nodeType":"VariableDeclaration","scope":1534,"src":"2141:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1466,"name":"bytes","nodeType":"ElementaryTypeName","src":"2141:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1476,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2173:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1471,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2177:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2173:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2163:9:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1468,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2141:47:6"},{"expression":{"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1477,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2198:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1479,"indexExpression":{"hexValue":"30","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2198:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2210:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2198:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1482,"nodeType":"ExpressionStatement","src":"2198:15:6"},{"expression":{"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1483,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2223:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1485,"indexExpression":{"hexValue":"31","id":1484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2223:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2235:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2223:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1488,"nodeType":"ExpressionStatement","src":"2223:15:6"},{"body":{"id":1517,"nodeType":"Block","src":"2293:95:6","statements":[{"expression":{"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1503,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2307:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1505,"indexExpression":{"id":1504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2314:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2307:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1506,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2319:10:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1510,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1507,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2330:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2343:3:6","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2330:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2319:28:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2307:40:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1512,"nodeType":"ExpressionStatement","src":"2307:40:6"},{"expression":{"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1513,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2361:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2361:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1516,"nodeType":"ExpressionStatement","src":"2361:16:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1497,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2281:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2285:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2281:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1518,"initializationExpression":{"assignments":[1490],"declarations":[{"constant":false,"id":1490,"mutability":"mutable","name":"i","nameLocation":"2261:1:6","nodeType":"VariableDeclaration","scope":1518,"src":"2253:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1496,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2265:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1492,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2269:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2265:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2265:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2253:26:6"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2288:3:6","subExpression":{"id":1500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"2290:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1502,"nodeType":"ExpressionStatement","src":"2288:3:6"},"nodeType":"ForStatement","src":"2248:140:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1519,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2401:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2401:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1528,"nodeType":"IfStatement","src":"2397:96:6","trueBody":{"id":1527,"nodeType":"Block","src":"2418:75:6","statements":[{"errorCall":{"arguments":[{"id":1523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1455,"src":"2468:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1524,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2475:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1522,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"2439:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:43:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1526,"nodeType":"RevertStatement","src":"2432:50:6"}]}},{"expression":{"arguments":[{"id":1531,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"2516:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1529,"name":"string","nodeType":"ElementaryTypeName","src":"2509:6:6","typeDescriptions":{}}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1461,"id":1533,"nodeType":"Return","src":"2502:21:6"}]},"documentation":{"id":1453,"nodeType":"StructuredDocumentation","src":"1888:112:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2014:11:6","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1455,"mutability":"mutable","name":"value","nameLocation":"2034:5:6","nodeType":"VariableDeclaration","scope":1535,"src":"2026:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1454,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1457,"mutability":"mutable","name":"length","nameLocation":"2049:6:6","nodeType":"VariableDeclaration","scope":1535,"src":"2041:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:31:6"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1535,"src":"2080:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1459,"name":"string","nodeType":"ElementaryTypeName","src":"2080:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2079:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1555,"nodeType":"FunctionDefinition","src":"2689:148:6","nodes":[],"body":{"id":1554,"nodeType":"Block","src":"2762:75:6","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1548,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"2807:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1546,"name":"uint160","nodeType":"ElementaryTypeName","src":"2799:7:6","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2791:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1544,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:6","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1551,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"2815:14:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1543,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1452,1535,1555],"referencedDeclaration":1535,"src":"2779:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1542,"id":1553,"nodeType":"Return","src":"2772:58:6"}]},"documentation":{"id":1536,"nodeType":"StructuredDocumentation","src":"2536:148:6","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2698:11:6","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1538,"mutability":"mutable","name":"addr","nameLocation":"2718:4:6","nodeType":"VariableDeclaration","scope":1555,"src":"2710:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1537,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2709:14:6"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1555,"src":"2747:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1540,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:15:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1592,"nodeType":"FunctionDefinition","src":"2914:182:6","nodes":[],"body":{"id":1591,"nodeType":"Block","src":"2992:104:6","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1567,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"3015:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1565,"name":"bytes","nodeType":"ElementaryTypeName","src":"3009:5:6","typeDescriptions":{}}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3018:6:6","memberName":"length","nodeType":"MemberAccess","src":"3009:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1572,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3034:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3028:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1570,"name":"bytes","nodeType":"ElementaryTypeName","src":"3028:5:6","typeDescriptions":{}}},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3037:6:6","memberName":"length","nodeType":"MemberAccess","src":"3028:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:34:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1579,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"3063:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1577,"name":"bytes","nodeType":"ElementaryTypeName","src":"3057:5:6","typeDescriptions":{}}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1576,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3047:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1585,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3086:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1583,"name":"bytes","nodeType":"ElementaryTypeName","src":"3080:5:6","typeDescriptions":{}}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1582,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3070:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3047:42:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3009:80:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1564,"id":1590,"nodeType":"Return","src":"3002:87:6"}]},"documentation":{"id":1556,"nodeType":"StructuredDocumentation","src":"2843:66:6","text":" @dev Returns true if the two strings are equal."},"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2923:5:6","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"a","nameLocation":"2943:1:6","nodeType":"VariableDeclaration","scope":1592,"src":"2929:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1557,"name":"string","nodeType":"ElementaryTypeName","src":"2929:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"b","nameLocation":"2960:1:6","nodeType":"VariableDeclaration","scope":1592,"src":"2946:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1559,"name":"string","nodeType":"ElementaryTypeName","src":"2946:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2928:34:6"},"returnParameters":{"id":1564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1592,"src":"2986:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1562,"name":"bool","nodeType":"ElementaryTypeName","src":"2986:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2985:6:6"},"scope":1593,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1345,"nodeType":"StructuredDocumentation","src":"216:34:6","text":" @dev String operations."},"fullyImplemented":true,"linearizedBaseContracts":[1593],"name":"Strings","nameLocation":"259:7:6","scope":1594,"usedErrors":[1358],"usedEvents":[]}],"license":"MIT"},"id":6} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json deleted file mode 100644 index 1cbbc92..0000000 --- a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC1155Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json deleted file mode 100644 index 976f69a..0000000 --- a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC20Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file diff --git a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json b/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json deleted file mode 100644 index 8e04809..0000000 --- a/examples/on-chain_mnist/contracts/out/draft-IERC6093.sol/IERC721Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","id":137,"exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"nodeType":"SourceUnit","src":"112:6420:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"112:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41,"nodeType":"ContractDefinition","src":"278:1764:0","nodes":[{"id":11,"nodeType":"ErrorDefinition","src":"621:80:0","nodes":[],"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"307:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"627:24:0","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"660:6:0","nodeType":"VariableDeclaration","scope":11,"src":"652:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"676:7:0","nodeType":"VariableDeclaration","scope":11,"src":"668:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"693:6:0","nodeType":"VariableDeclaration","scope":11,"src":"685:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:0"}},{"id":16,"nodeType":"ErrorDefinition","src":"864:41:0","nodes":[],"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"707:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"870:18:0","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"897:6:0","nodeType":"VariableDeclaration","scope":16,"src":"889:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:0"}},{"id":21,"nodeType":"ErrorDefinition","src":"1075:45:0","nodes":[],"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"911:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1081:20:0","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1102:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:0"}},{"id":30,"nodeType":"ErrorDefinition","src":"1476:85:0","nodes":[],"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1126:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1482:26:0","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1517:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1509:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1526:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:0"}},{"id":35,"nodeType":"ErrorDefinition","src":"1746:45:0","nodes":[],"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1567:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1752:20:0","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1781:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1773:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:0"}},{"id":40,"nodeType":"ErrorDefinition","src":"1997:43:0","nodes":[],"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1797:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2003:19:0","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2031:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2023:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:139:0","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"288:12:0","scope":137,"usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"id":89,"nodeType":"ContractDefinition","src":"2186:2092:0","nodes":[{"id":47,"nodeType":"ErrorDefinition","src":"2440:40:0","nodes":[],"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2216:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2446:18:0","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2473:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2465:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:0"}},{"id":52,"nodeType":"ErrorDefinition","src":"2623:46:0","nodes":[],"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2486:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2629:22:0","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2652:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:0"}},{"id":61,"nodeType":"ErrorDefinition","src":"2969:75:0","nodes":[],"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2675:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2975:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3004:6:0","nodeType":"VariableDeclaration","scope":61,"src":"2996:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3012:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3037:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3029:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:0"}},{"id":66,"nodeType":"ErrorDefinition","src":"3207:42:0","nodes":[],"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3050:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3213:19:0","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3241:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3233:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:0"}},{"id":71,"nodeType":"ErrorDefinition","src":"3419:46:0","nodes":[],"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3255:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3425:21:0","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3447:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"3723:68:0","nodes":[],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3471:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3729:26:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3764:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3756:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3774:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:0"}},{"id":83,"nodeType":"ErrorDefinition","src":"3976:46:0","nodes":[],"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3797:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3982:21:0","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4012:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4004:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"4230:46:0","nodes":[],"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4028:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4236:21:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4266:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4258:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2044:141:0","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2196:13:0","scope":137,"usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"id":136,"nodeType":"ContractDefinition","src":"4424:2107:0","nodes":[{"id":101,"nodeType":"ErrorDefinition","src":"4821:99:0","nodes":[],"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4455:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4827:26:0","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4862:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4854:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4878:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4870:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4895:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4887:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4903:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:0"}},{"id":106,"nodeType":"ErrorDefinition","src":"5083:43:0","nodes":[],"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4926:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5089:20:0","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5118:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5110:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:0"}},{"id":111,"nodeType":"ErrorDefinition","src":"5296:47:0","nodes":[],"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5132:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5302:22:0","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5325:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:0"}},{"id":118,"nodeType":"ErrorDefinition","src":"5610:68:0","nodes":[],"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5349:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:0","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5653:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5645:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5671:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5663:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:0"}},{"id":123,"nodeType":"ErrorDefinition","src":"5863:47:0","nodes":[],"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5684:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5869:22:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5900:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5892:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:0"}},{"id":128,"nodeType":"ErrorDefinition","src":"6118:47:0","nodes":[],"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5916:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6124:22:0","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6155:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6147:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:0"}},{"id":135,"nodeType":"ErrorDefinition","src":"6456:73:0","nodes":[],"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6171:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:0","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6488:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6507:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:0"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4280:143:0","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4434:14:0","scope":137,"usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"license":"MIT"},"id":0} \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 44b35dc..5eb0f62 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -116,7 +116,7 @@ def get_model_data(self): return (content, os.path.abspath(proof_file)) - def _generate_calldata(self, contract_address: Address, chain_id, function_name, parameters): + def _generate_calldata(self, contract_address: Address, chain_id, abi_path: str, function_name, parameters): """ Generate calldata for calling a smart contract function @@ -129,7 +129,6 @@ def _generate_calldata(self, contract_address: Address, chain_id, function_name, str: Hex string of calldata """ print("Fetching calldata... 🗣️") - abi_path = "examples/on-chain_mnist/abi/MNISTNFT_abi.json" with open(abi_path, 'r') as f: abi = json.load(f) @@ -193,7 +192,7 @@ async def verify(self, proof_path): print(e) return False - async def transmit(self, account: Account, contract_address: Address, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): + async def transmit(self, account: Account, contract_address: Address, abi_path: str, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): """ Transmit: Verify the proof signature (so we know that the account owner signed off on the proof verification), verify the proof, then send the transaction to the contract. @@ -232,12 +231,12 @@ async def transmit(self, account: Account, contract_address: Address, chain_id: if rpc_url is not None: web3 = Web3(Web3.HTTPProvider(rpc_url)) else: - alchemy_url = "https://eth-sepolia.g.alchemy.com/v2/aGP6ImVTfOlef4kzUxw0-31sabFgyTCT" + alchemy_url = os.getenv("ALCHEMY_URL") web3 = Web3(Web3.HTTPProvider(alchemy_url)) nonce = web3.eth.get_transaction_count(account.address) try: # Make this await again when we use etherscan to fetch ABIs - calldata = self._generate_calldata(contract_address, chain_id, function_name, params) + calldata = self._generate_calldata(contract_address, chain_id, abi_path, function_name, params) except KeyError as e: print(f"Error generating calldata: {str(e)}") raise From 3619a75e00309dea57aec42d0afb2fa581ff4f9f Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 9 Mar 2024 20:09:41 +0000 Subject: [PATCH 15/27] notes --- giza_actions/agent.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 5eb0f62..573df76 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -59,7 +59,9 @@ def __init__(self, id: Optional[int] = None, version: Optional[int] = None, **kw super().__init__(id=id, version=version, **kwargs) def infer(self, input_file=None, input_feed=None): - + """ + Need docs on these ASAP + """ params = {} if input_file is not None: @@ -69,7 +71,7 @@ def infer(self, input_file=None, input_feed=None): params['input_feed'] = input_feed params['verifiable'] = True - params['job_size'] = "S" + params['job_size'] = "M" params['output_dtype'] = "Tensor" self.inference, self.request_id = self.predict(**params) From 6ed11607101c551df9d7ba5f1e224e5f8607fedb Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 9 Mar 2024 20:11:22 +0000 Subject: [PATCH 16/27] job size fix --- giza_actions/agent.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 573df76..e9d1e21 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -58,7 +58,7 @@ def __init__(self, id: Optional[int] = None, version: Optional[int] = None, **kw """ super().__init__(id=id, version=version, **kwargs) - def infer(self, input_file=None, input_feed=None): + def infer(self, input_file=None, input_feed=None, job_size="M"): """ Need docs on these ASAP """ @@ -71,7 +71,7 @@ def infer(self, input_file=None, input_feed=None): params['input_feed'] = input_feed params['verifiable'] = True - params['job_size'] = "M" + params['job_size'] = job_size params['output_dtype'] = "Tensor" self.inference, self.request_id = self.predict(**params) From 71c59000ec4036b2a10560fb9718e69e938a18bb Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sun, 10 Mar 2024 00:02:25 +0000 Subject: [PATCH 17/27] hacks: proper formatting and awaiting self verification --- giza_actions/agent.py | 2 +- giza_actions/model.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index e9d1e21..4e77457 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -224,7 +224,7 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: signer = web3.eth.account.recover_message(signedProofMessage, signed_proof_elements) assert signer.lower() == account.address.lower() print("Proof signature verified! 🔥") - assert self.verify(proofMessage.proofType.proof_path) + assert await self.verify(proofMessage.proofType.proof_path) print("Proof verified! ⚡️") print("All good! ✅ Sending transaction...") diff --git a/giza_actions/model.py b/giza_actions/model.py index 2e368f5..834df2f 100644 --- a/giza_actions/model.py +++ b/giza_actions/model.py @@ -208,7 +208,7 @@ def predict( request_id = body["request_id"] if self.framework == Framework.CAIRO: - logging.info("Serialized: ", serialized_output) + logging.info("Serialized: %s", serialized_output) preds = self._parse_cairo_response(serialized_output, output_dtype) elif self.framework == Framework.EZKL: From 78bb1ac6a8182e91debd9b4e4db0537b67dc60d9 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sun, 10 Mar 2024 10:21:07 +0000 Subject: [PATCH 18/27] value None error fixed --- giza_actions/agent.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 4e77457..486a100 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -246,12 +246,15 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: try: transaction = { "to": contract_address, + "from": account.address, "data": calldata, "nonce": nonce, "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), "gasPrice": 40000000000, - "value": value + "chainId": chain_id } + if value is not None: + transaction["value"] = value except KeyError as e: print(f"Error creating transaction dictionary: {str(e)}") raise From a14fd5eb7c02cb9f6f32e5b348ecd16c1d3e3ff9 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 16 Mar 2024 13:00:56 +0000 Subject: [PATCH 19/27] todos --- giza_actions/agent.py | 10 +++- giza_actions/on_chain_deploy.py | 84 +++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 giza_actions/on_chain_deploy.py diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 486a100..a188c59 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -18,8 +18,10 @@ from dotenv import load_dotenv from typing import Optional +# todo: load from ./home load_dotenv() +# todo: extend to have request_id, deployment_id: giza models (model_id and version_id), and version_id; remove proof_path from this and dependencies class ProofType(BaseModel): model_id: int # The model being used for inference proof_path: Optional[str] # The path to the proof of inference @@ -58,6 +60,7 @@ def __init__(self, id: Optional[int] = None, version: Optional[int] = None, **kw """ super().__init__(id=id, version=version, **kwargs) + # todo: more specific for the job_id def infer(self, input_file=None, input_feed=None, job_size="M"): """ Need docs on these ASAP @@ -79,6 +82,7 @@ def infer(self, input_file=None, input_feed=None, job_size="M"): print("Inference saved! ✅ Result: ", self.inference, self.request_id) def get_model_data(self): + # todo: Show job status instead of 404 error """Get proof data from GCP and save it as a class attribute""" client = DeploymentsClient(API_HOST) @@ -117,7 +121,9 @@ def get_model_data(self): f.write(content) return (content, os.path.abspath(proof_file)) - + + # todo: make it easier for users to call popular functions in smart contracts + # Maybe chainid default to Sepol def _generate_calldata(self, contract_address: Address, chain_id, abi_path: str, function_name, parameters): """ Generate calldata for calling a smart contract function @@ -149,7 +155,7 @@ def _generate_calldata(self, contract_address: Address, chain_id, abi_path: str, calldata = contract.encodeABI(function_name, args=parameters) print("Calldata: ", calldata) return calldata - + # Todo: think about transations that don't need to be verified on-chain: where are we storing these signature? def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): address = account.address diff --git a/giza_actions/on_chain_deploy.py b/giza_actions/on_chain_deploy.py new file mode 100644 index 0000000..91151eb --- /dev/null +++ b/giza_actions/on_chain_deploy.py @@ -0,0 +1,84 @@ +from giza_actions.model import GizaModel +from typing import Optional +import requests +from ape import Contract + +class OCDeployer: + """ + A blockchain deployer. `OC` stands for on-chain. Uses Ape framework and GizaModel to verify a model proof on-chain and execute an action from it. + + Attributes: + model (GizaModel): The model that this deployer uploads proofs for. This model must have the following fields: model_path, id, version, orion_runner_service_url in order to work. This is because all on-chain models require a proof to be generated by Orion Runner. + + Methods: + infer: Runs model inference and retrieves the model output + get_model_data: retrieves the proof from GCP given the request_id, version_id, deployment_id, and internal model_id + process_inference: overriden by user to specify calldata for a given smart contract function + deploy: verifies the proof, then calls the smart contract with calldata from inference + """ + + def __init__(self, model: GizaModel): + """Initialize deployer. + + Args: + model (GizaModel): GizaModel instance + """ + if ( + model.model_path is None + or model.id is None + or model.version is None + or model.orion_runner_service_url is None + ): + raise ValueError( + "GizaModel is missing required fields: " + "model_path, id, version, orion_runner_service_url" + ) + + self.model = model + + def infer(self, input_file: Optional[str], input_feed: Optional[dict]): + """Run model inference and store output.""" + # TODO: Extract the request id from this call as well so that we can obtain the proof + self.inference = self.model.predict(input_file, input_feed, verifiable=True) + print("Inference saved! ✅ Result: ", self.inference) + + + # TODO: Make this function async using Asyncer + def _get_model_data(self): + """Get proof data from GCP.""" + proof_metadata_url = f"https://api-dev.gizatech.xyz/api/v1/models/{self.model.id}/versions/{self.model.version}/deployments/{self.model.orion_runner_service_url}/proofs/{self.request_id}" + + response = requests.get(proof_metadata_url) + + # TODO: Log this request and response + + if response.status_code == 200: + proof_metadata = response.json() + return proof_metadata + else: + raise Exception(f"Failed to get proof metadata: {response.text}") + + def process_inference(self): + """ + Process inference data into contract calldata. + + Raises: + Exception: If inference not run yet. + """ + if self.inference is None: + raise Exception("Please run infer() before calling process_inference()") + + # Default just sends inference result to contract + return self.inference + + def deploy(self, sc_address, calldata, proof): + """ + Deploy model: Verify proof and execute contract function. + + Returns: + Transaction hash + """ + contract = Contract(sc_address) + # TODO: get model data + # TODO: Validate proof locally and execute contract + \ No newline at end of file From 14fe6a0555b11062b42a13b3909a65fff0bc8f4e Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 16 Mar 2024 13:13:13 +0000 Subject: [PATCH 20/27] endpoint fixes --- giza_actions/agent.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index a188c59..9adb3c9 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -11,8 +11,8 @@ import requests import logging from giza.frameworks.cairo import verify -from giza_actions.utils import get_deployment_uri -from giza.client import DeploymentsClient +from giza_actions.utils import get_endpoint_uri +from giza.client import EndpointsClient from giza import API_HOST from pydantic import BaseModel from dotenv import load_dotenv @@ -21,7 +21,7 @@ # todo: load from ./home load_dotenv() -# todo: extend to have request_id, deployment_id: giza models (model_id and version_id), and version_id; remove proof_path from this and dependencies +# todo: extend to have request_id, endpoint_id: giza models (model_id and version_id), and version_id; remove proof_path from this and dependencies class ProofType(BaseModel): model_id: int # The model being used for inference proof_path: Optional[str] # The path to the proof of inference @@ -46,7 +46,7 @@ class GizaAgent(GizaModel): Methods: infer: Runs model inference and retrieves the model output - get_model_data: retrieves the proof from GCP given the request_id, version_id, deployment_id, and internal model_id + get_model_data: retrieves the proof from GCP given the request_id, version_id, endpoint_id, and internal model_id generate_calldate: generates calldata for a given smart contract function verify: verifies the proof locally deploy: verifies the proof, then calls the smart contract with calldata from inference @@ -84,17 +84,17 @@ def infer(self, input_file=None, input_feed=None, job_size="M"): def get_model_data(self): # todo: Show job status instead of 404 error """Get proof data from GCP and save it as a class attribute""" - client = DeploymentsClient(API_HOST) + client = EndpointsClient(API_HOST) - uri = get_deployment_uri(self.model_id, self.version_id) + uri = get_endpoint_uri(self.model_id, self.version_id) # get this from CLI proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" time.sleep(3) logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") - deployment_id = get_deployment_id(self.model_id, self.version_id) + endpoint_id = get_endpoint_uri(self.model_id, self.version_id) timeout = time.time() + 8000 - print(f"Deployment ID: {deployment_id}") + print(f"endpoint ID: {endpoint_id}") print(f"Request ID: {self.request_id}") print(f"Model ID: {self.model_id}") print(f"Version ID: {self.version_id}") @@ -106,7 +106,7 @@ def get_model_data(self): print("Proof retrieval timed out") raise TimeoutError("Proof retrieval timed out") try: - proof = client.get_proof(self.model_id, self.version_id, deployment_id, self.request_id) + proof = client.get_proof(self.model_id, self.version_id, endpoint_id, self.request_id) print(f"Proof: {proof.json(exclude_unset=True)}") break # Exit the loop if proof is retrieved successfully except requests.exceptions.HTTPError as e: @@ -116,7 +116,7 @@ def get_model_data(self): # Save the proof to a file proof_file = "zk.proof" - content = client.download_proof(self.model_id, self.version_id, deployment_id, self.request_id) + content = client.download_proof(self.model_id, self.version_id, endpoint_id, self.request_id) with open(proof_file, "wb") as f: f.write(content) @@ -307,12 +307,12 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: -def get_deployment_id(model_id, version_id): +def get_endpoint_id(model_id, version_id): """ - Retrieve the deployment ID for the model and version. + Retrieve the endpoint ID for the model and version. Returns: - int: The ID of the deployment. + int: The ID of the endpoint. """ - client = DeploymentsClient(API_HOST) + client = EndpointsClient(API_HOST) return client.list(model_id, version_id).root[0].id \ No newline at end of file From 1c3032f2837299f8d46a6e991aae29f7d1972f77 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Sat, 16 Mar 2024 13:16:47 +0000 Subject: [PATCH 21/27] .. --- giza_actions/agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 9adb3c9..5763b8c 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -88,7 +88,7 @@ def get_model_data(self): uri = get_endpoint_uri(self.model_id, self.version_id) # get this from CLI - proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/deployments/{uri}/proofs/{self.request_id}:download" + proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/endpoints/{uri}/proofs/{self.request_id}:download" time.sleep(3) logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") From da83805048ec518223c4cb6c7b99971f767885c6 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 19 Mar 2024 11:49:06 +0100 Subject: [PATCH 22/27] etherscan integration: no need for an abi --- giza_actions/agent.py | 53 ++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 5763b8c..bcefd3b 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -122,40 +122,35 @@ def get_model_data(self): return (content, os.path.abspath(proof_file)) - # todo: make it easier for users to call popular functions in smart contracts - # Maybe chainid default to Sepol - def _generate_calldata(self, contract_address: Address, chain_id, abi_path: str, function_name, parameters): + async def _generate_calldata(self, contract_address: str, chain_id: int, function_name: str, parameters: list): """ Generate calldata for calling a smart contract function Args: - abi_path (str): Path to JSON ABI for the contract - function_name (str): Name of contract function to call + contract_address (str): Address of the contract + chain_id (int): ID of the Ethereum chain + function_name (str): Name of contract function to call parameters (list): Arguments to pass to the function Returns: str: Hex string of calldata """ - print("Fetching calldata... 🗣️") - with open(abi_path, 'r') as f: - abi = json.load(f) - web3 = Web3() - contract = web3.eth.contract(abi=abi) + + try: + abi = fetch_abi(contract_address, chain_id) + except ValueError as e: + raise ValueError(f"Error fetching contract ABI: {str(e)}") from e function_abi = next((item for item in abi if 'name' in item and item['name'] == function_name), None) if function_abi is None: raise ValueError(f"Function {function_name} not found in ABI") - if not isinstance(parameters, (list, tuple)): - parameters = [parameters] # Convert single value to a list - contract = web3.eth.contract(address=contract_address, abi=abi) calldata = contract.encodeABI(function_name, args=parameters) - print("Calldata: ", calldata) return calldata - # Todo: think about transations that don't need to be verified on-chain: where are we storing these signature? + def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): address = account.address @@ -315,4 +310,30 @@ def get_endpoint_id(model_id, version_id): int: The ID of the endpoint. """ client = EndpointsClient(API_HOST) - return client.list(model_id, version_id).root[0].id \ No newline at end of file + return client.list(model_id, version_id).root[0].id + +def fetch_abi(contract_address, chain_id): + api_key = os.getenv("ETHERSCAN_API_KEY") + if not api_key: + raise ValueError("ETHERSCAN_API_KEY environment variable not set") + + if chain_id == 1: + etherscan_url = "https://api.etherscan.io/api" + elif chain_id == 11155111: + etherscan_url = "https://api-sepolia.etherscan.io/api" + elif chain_id == 5: + etherscan_url = "https://api-goerli.etherscan.io/api" + else: + raise ValueError("Unsupported chain ID") + + url = f"{etherscan_url}?module=contract&action=getabi&address={contract_address}&apikey={api_key}" + + response = requests.get(url) + response_json = response.json() + + if response_json["status"] == "1": + abi = response_json["result"] + return json.loads(abi) + else: + raise ValueError(f"Failed to retrieve contract ABI: {response_json['message']}") + From 0214f237b5d5557ac34886b35f9b2147874c0399 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 19 Mar 2024 14:47:21 +0100 Subject: [PATCH 23/27] proof sig enabled logic --- examples/on-chain_mnist/action_agent.py | 4 ++ giza_actions/agent.py | 60 ++++++++++--------------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index a6af425..1299868 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -64,10 +64,12 @@ async def transmission(): # Mnemonics are disabled inherently, so we must enable Account.enable_unaudited_hdwallet_features() + # Fetch this from ./home mnemonic = os.getenv("MNEMONIC") account = import_account(mnemonic) # Make sure the model is deployed, then create an agent + # Add contract address as a parameter, then add an update contract function. Also add a network: string parameter agent = GizaAgent(id=id, version=version) # Rather than calling predict, we call infer to store the result agent.infer(input_feed={"image": img}) @@ -79,6 +81,7 @@ async def transmission(): inference_result = int(agent.inference[0][0] * 10) # Pass the inference result and the sender address inference_result_arr = [inference_result, Address("0xEbeD10f21F32E7F327F8B923257c1b6EceD857b7")] + # No need for an ABI anymore abi_path = "examples/on-chain_mnist/abi/MNISTNFT_abi.json" print("inference result: ", inference_result_arr) @@ -88,6 +91,7 @@ async def transmission(): # verify proof verified = await agent.verify(proof_path) # Sign the proof if verification succeeds, transmit txn + # Perhaps define an intent here? if verified: print("Proof verified. 🚀") (signed_proof, is_none, proofMessage, signable_proof_message) = agent.sign_proof(account, proof, proof_path) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index bcefd3b..ccfeb77 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -195,58 +195,45 @@ async def verify(self, proof_path): print(e) return False - async def transmit(self, account: Account, contract_address: Address, abi_path: str, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, is_none, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], unsafe: bool = False): + async def transmit(self, account: Account, contract_address: Address, abi_path: str, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], proofsig_enabled: bool = False): """ - Transmit: Verify the proof signature (so we know that the account owner signed off on the proof verification), verify the proof, then send the transaction to the contract. - + Transmit: Verify the proof signature (if proofsig_enabled is True), verify the proof, then send the transaction to the contract. + Returns: A transaction receipt - """ - + """ + web3 = Web3() - - v, r, s = signed_proof.v, signed_proof.r, signed_proof.s - signed_proof_elements = (v, r, s) - - if not unsafe: - if is_none: - raise ValueError("Proof cannot be None when unsafe is False") - + + if proofsig_enabled: + v, r, s = signed_proof.v, signed_proof.r, signed_proof.s + signed_proof_elements = (v, r, s) signer = web3.eth.account.recover_message(signedProofMessage, signed_proof_elements) assert signer.lower() == account.address.lower() print("Proof signature verified! 🔥") - assert self.verify(proofMessage.proofType.proof_path) - print("Proof verified! ⚡️") - else: - if is_none: - print("Warning: Proof is None. Skipping proof verification.") - else: - print("Signed proof retrieved! ✅") - signer = web3.eth.account.recover_message(signedProofMessage, signed_proof_elements) - assert signer.lower() == account.address.lower() - print("Proof signature verified! 🔥") - assert await self.verify(proofMessage.proofType.proof_path) - print("Proof verified! ⚡️") - + + assert await self.verify(proofMessage.proofType.proof_path) + print("Proof verified! ⚡️") + print("All good! ✅ Sending transaction...") - + try: if rpc_url is not None: web3 = Web3(Web3.HTTPProvider(rpc_url)) else: alchemy_url = os.getenv("ALCHEMY_URL") web3 = Web3(Web3.HTTPProvider(alchemy_url)) - nonce = web3.eth.get_transaction_count(account.address) + nonce = web3.eth.get_transaction_count(account.address) try: # Make this await again when we use etherscan to fetch ABIs calldata = self._generate_calldata(contract_address, chain_id, abi_path, function_name, params) except KeyError as e: print(f"Error generating calldata: {str(e)}") raise - #TODO: Figure out how to get gasPrice + # TODO: Figure out how to get gasPrice try: transaction = { - "to": contract_address, + "to": contract_address, "from": account.address, "data": calldata, "nonce": nonce, @@ -264,15 +251,15 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: signed_tx = account.sign_transaction(transaction) except KeyError as e: print(f"Error signing transaction: {str(e)}") - raise - print (f"Signed transaction: {signed_tx}") + raise + print(f"Signed transaction: {signed_tx}") try: tx_hash = web3.eth.send_raw_transaction(signed_tx.rawTransaction) except ValueError as e: print(f"Error sending transaction: {str(e)}") return None except Exception as e: - print(f"Error sending transaction: {str(e)}") + print(f"Error sending transaction: {str(e)}") return None try: receipt = web3.eth.wait_for_transaction_receipt(tx_hash, timeout=300) @@ -285,11 +272,11 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: except asyncio.TimeoutError: print("Transaction receipt retrieval timed out after 300 seconds.") return None - + except ValueError as e: print(f"Error encoding transaction: {e}") return None - + except ContractCustomError as e: print(f"Custom error occurred: {e}") print(f"Error message: {e.args[0]}") @@ -335,5 +322,4 @@ def fetch_abi(contract_address, chain_id): abi = response_json["result"] return json.loads(abi) else: - raise ValueError(f"Failed to retrieve contract ABI: {response_json['message']}") - + raise ValueError(f"Failed to retrieve contract ABI: {response_json['message']}") \ No newline at end of file From a0fd146317f3868af9bd26bbc758d3d50197e781 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 19 Mar 2024 14:49:45 +0100 Subject: [PATCH 24/27] transmit docstrings --- giza_actions/agent.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index ccfeb77..9cf807b 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -197,10 +197,24 @@ async def verify(self, proof_path): async def transmit(self, account: Account, contract_address: Address, abi_path: str, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], proofsig_enabled: bool = False): """ - Transmit: Verify the proof signature (if proofsig_enabled is True), verify the proof, then send the transaction to the contract. + Transmit: Verify the proof signature (if proofsig_enabled is True), verify the proof, then send the transaction to the contract. - Returns: - A transaction receipt + Args: + account (Account): The account object used to sign the transaction. + contract_address (Address): The address of the contract to interact with. + abi_path (str): The path to the ABI file for the contract. + chain_id (int): The ID of the blockchain network. + function_name (str): The name of the contract function to call. + params: The parameters to pass to the contract function. + value: The value (in Wei) to send with the transaction (optional). + signed_proof (SignableMessage): The signed proof message. + proofMessage (ProofMessage): The proof message object. + signedProofMessage: The signed proof message. + rpc_url (Optional[str]): The URL of the RPC endpoint to use (optional). + proofsig_enabled (bool): Whether to enable proof signature verification or not (default: False). + + Returns: + A transaction receipt """ web3 = Web3() From 0ba6ad39da487a4c0dcddebe3f466d2c2d8b041b Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 19 Mar 2024 14:58:59 +0100 Subject: [PATCH 25/27] fix: init comes with contract addy and chain id --- giza_actions/agent.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 9cf807b..6468eb2 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -52,16 +52,21 @@ class GizaAgent(GizaModel): deploy: verifies the proof, then calls the smart contract with calldata from inference """ - def __init__(self, id: Optional[int] = None, version: Optional[int] = None, **kwargs): + def __init__(self, contract_address: str, chain_id: int, id: Optional[int] = None, version: Optional[int] = None, **kwargs): """Initialize deployer. - + Args: - model (GizaModel): GizaModel instance + contract_address (str): The address of the contract. + chain_id (int): The ID of the blockchain network. + id (Optional[int]): Optional ID (default: None). + version (Optional[int]): Optional version (default: None). + **kwargs: Additional keyword arguments. """ super().__init__(id=id, version=version, **kwargs) + self.contract_address = contract_address + self.chain_id = chain_id - # todo: more specific for the job_id - def infer(self, input_file=None, input_feed=None, job_size="M"): + def infer(self, input_file=None, input_feed=None, job_size="S"): """ Need docs on these ASAP """ @@ -82,7 +87,7 @@ def infer(self, input_file=None, input_feed=None, job_size="M"): print("Inference saved! ✅ Result: ", self.inference, self.request_id) def get_model_data(self): - # todo: Show job status instead of 404 error + #TODO: Show job status instead of 404 error """Get proof data from GCP and save it as a class attribute""" client = EndpointsClient(API_HOST) @@ -122,7 +127,7 @@ def get_model_data(self): return (content, os.path.abspath(proof_file)) - async def _generate_calldata(self, contract_address: str, chain_id: int, function_name: str, parameters: list): + async def _generate_calldata(self, function_name: str, parameters: list): """ Generate calldata for calling a smart contract function @@ -138,7 +143,7 @@ async def _generate_calldata(self, contract_address: str, chain_id: int, functio web3 = Web3() try: - abi = fetch_abi(contract_address, chain_id) + abi = fetch_abi(self.contract_address, self.chain_id) except ValueError as e: raise ValueError(f"Error fetching contract ABI: {str(e)}") from e @@ -147,7 +152,7 @@ async def _generate_calldata(self, contract_address: str, chain_id: int, functio if function_abi is None: raise ValueError(f"Function {function_name} not found in ABI") - contract = web3.eth.contract(address=contract_address, abi=abi) + contract = web3.eth.contract(address=self.contract_address, abi=abi) calldata = contract.encodeABI(function_name, args=parameters) return calldata @@ -239,12 +244,10 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: web3 = Web3(Web3.HTTPProvider(alchemy_url)) nonce = web3.eth.get_transaction_count(account.address) try: - # Make this await again when we use etherscan to fetch ABIs - calldata = self._generate_calldata(contract_address, chain_id, abi_path, function_name, params) + calldata = await self._generate_calldata(function_name, params) except KeyError as e: print(f"Error generating calldata: {str(e)}") raise - # TODO: Figure out how to get gasPrice try: transaction = { "to": contract_address, @@ -252,7 +255,7 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: "data": calldata, "nonce": nonce, "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), - "gasPrice": 40000000000, + "gasPrice": web3.eth.gas_price, "chainId": chain_id } if value is not None: From 6e34f7550b6513f9a14169169377efff037d7bbc Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 19 Mar 2024 15:22:51 +0100 Subject: [PATCH 26/27] fix: no more dummy sigs --- giza_actions/agent.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 6468eb2..2125364 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -12,7 +12,7 @@ import logging from giza.frameworks.cairo import verify from giza_actions.utils import get_endpoint_uri -from giza.client import EndpointsClient +from giza.client import DeploymentsClient from giza import API_HOST from pydantic import BaseModel from dotenv import load_dotenv @@ -33,6 +33,7 @@ class Config: class ProofMessage(BaseModel): proofType: ProofType +#TODO: Add functions for updating contract, chain id, and endpoint uri class GizaAgent(GizaModel): """ A blockchain AI agent that helps users put their Actions on-chain. Uses Ape framework and GizaModel to verify a model proof off-chain, sign it with the user's account, and send results to a select EVM chain to execute code. @@ -63,7 +64,12 @@ def __init__(self, contract_address: str, chain_id: int, id: Optional[int] = Non **kwargs: Additional keyword arguments. """ super().__init__(id=id, version=version, **kwargs) - self.contract_address = contract_address + contract_sc = Web3.to_checksum_address(contract_address) + + #TODO: How dow we get the endpoint id from this? + self.endpoint_uri = get_endpoint_uri(self.model_id, self.version_id) + + self.contract_address = contract_sc self.chain_id = chain_id def infer(self, input_file=None, input_feed=None, job_size="S"): @@ -87,19 +93,16 @@ def infer(self, input_file=None, input_feed=None, job_size="S"): print("Inference saved! ✅ Result: ", self.inference, self.request_id) def get_model_data(self): - #TODO: Show job status instead of 404 error """Get proof data from GCP and save it as a class attribute""" - client = EndpointsClient(API_HOST) + client = DeploymentsClient(API_HOST) - uri = get_endpoint_uri(self.model_id, self.version_id) # get this from CLI - proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/endpoints/{uri}/proofs/{self.request_id}:download" + proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/endpoints/{self.endpoint_uri}/proofs/{self.request_id}:download" time.sleep(3) logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") - endpoint_id = get_endpoint_uri(self.model_id, self.version_id) + timeout = time.time() + 8000 - print(f"endpoint ID: {endpoint_id}") print(f"Request ID: {self.request_id}") print(f"Model ID: {self.model_id}") print(f"Version ID: {self.version_id}") @@ -111,17 +114,17 @@ def get_model_data(self): print("Proof retrieval timed out") raise TimeoutError("Proof retrieval timed out") try: - proof = client.get_proof(self.model_id, self.version_id, endpoint_id, self.request_id) + #TODO: Verify that we can use endpoint URI here + proof = client.get_proof(self.model_id, self.version_id, self.endpoint_uri, self.request_id) print(f"Proof: {proof.json(exclude_unset=True)}") break # Exit the loop if proof is retrieved successfully except requests.exceptions.HTTPError as e: print("Proof retrieval failing, sleeping for 5 seconds") - print(e) time.sleep(5) # Save the proof to a file proof_file = "zk.proof" - content = client.download_proof(self.model_id, self.version_id, endpoint_id, self.request_id) + content = client.download_proof(self.model_id, self.version_id, self.endpoint_uri, self.request_id) with open(proof_file, "wb") as f: f.write(content) @@ -200,15 +203,13 @@ async def verify(self, proof_path): print(e) return False - async def transmit(self, account: Account, contract_address: Address, abi_path: str, chain_id: int, function_name: str, params, value, signed_proof: SignableMessage, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], proofsig_enabled: bool = False): + async def transmit(self, account: Account, function_name: str, params, value, signed_proof: SignableMessage, proofMessage: ProofMessage, signedProofMessage, rpc_url: Optional[str], proofsig_enabled: bool = False): """ Transmit: Verify the proof signature (if proofsig_enabled is True), verify the proof, then send the transaction to the contract. Args: account (Account): The account object used to sign the transaction. - contract_address (Address): The address of the contract to interact with. abi_path (str): The path to the ABI file for the contract. - chain_id (int): The ID of the blockchain network. function_name (str): The name of the contract function to call. params: The parameters to pass to the contract function. value: The value (in Wei) to send with the transaction (optional). @@ -250,13 +251,13 @@ async def transmit(self, account: Account, contract_address: Address, abi_path: raise try: transaction = { - "to": contract_address, + "to": self.contract_address, "from": account.address, "data": calldata, "nonce": nonce, - "gas": web3.eth.estimate_gas({"to": contract_address, "data": calldata}), + "gas": web3.eth.estimate_gas({"to": self.contract_address, "data": calldata}), "gasPrice": web3.eth.gas_price, - "chainId": chain_id + "chainId": self.chain_id } if value is not None: transaction["value"] = value From c0c279cc97f63c5fa7c9a7ee97dd2f05d6fe85b6 Mon Sep 17 00:00:00 2001 From: lancenonce Date: Tue, 19 Mar 2024 16:32:19 +0100 Subject: [PATCH 27/27] cleanup premerge with last todos --- ape-config.yaml | 4 + examples/on-chain_mnist/abi/MNISTNFT_abi.json | 532 ------------------ examples/on-chain_mnist/action_agent.py | 31 +- .../cairo/lofi_mnst/inference/.gitignore | 1 - .../cairo/lofi_mnst/inference/.tool-versions | 1 - .../cairo/lofi_mnst/inference/Scarb.lock | 127 ----- .../cairo/lofi_mnst/inference/Scarb.toml | 16 - .../cairo/lofi_mnst/inference/src/lib.cairo | 26 - .../on-chain_mnist/conversion_and_test.py | 42 -- giza_actions/agent.py | 46 +- 10 files changed, 41 insertions(+), 785 deletions(-) delete mode 100644 examples/on-chain_mnist/abi/MNISTNFT_abi.json delete mode 100644 examples/on-chain_mnist/cairo/lofi_mnst/inference/.gitignore delete mode 100644 examples/on-chain_mnist/cairo/lofi_mnst/inference/.tool-versions delete mode 100644 examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.lock delete mode 100644 examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.toml delete mode 100644 examples/on-chain_mnist/cairo/lofi_mnst/inference/src/lib.cairo delete mode 100644 examples/on-chain_mnist/conversion_and_test.py diff --git a/ape-config.yaml b/ape-config.yaml index 16934c7..b79b772 100644 --- a/ape-config.yaml +++ b/ape-config.yaml @@ -4,3 +4,7 @@ deployments: sepolia: - contract_type: MNISTNFT address: 0x9C5d3b892b88C66783e41e6B8b73fA744efeb5d6 + +test: + mnemonic: test test test test test test test test test test junk junk + number_of_accounts: 5 \ No newline at end of file diff --git a/examples/on-chain_mnist/abi/MNISTNFT_abi.json b/examples/on-chain_mnist/abi/MNISTNFT_abi.json deleted file mode 100644 index cef4726..0000000 --- a/examples/on-chain_mnist/abi/MNISTNFT_abi.json +++ /dev/null @@ -1,532 +0,0 @@ -[ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC721IncorrectOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC721InsufficientApproval", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC721InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "ERC721InvalidOperator", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC721InvalidOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC721InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC721InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC721NonexistentToken", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "sendTo", - "type": "address" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "onERC721Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "tokenExists", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] \ No newline at end of file diff --git a/examples/on-chain_mnist/action_agent.py b/examples/on-chain_mnist/action_agent.py index 1299868..63471d7 100644 --- a/examples/on-chain_mnist/action_agent.py +++ b/examples/on-chain_mnist/action_agent.py @@ -1,9 +1,9 @@ from eth_account import Account +from ape import accounts from eth_typing import Address import requests import os import numpy as np -from web3 import Web3 from PIL import Image from giza_actions.action import Action, action from giza_actions.agent import GizaAgent @@ -61,43 +61,32 @@ async def transmission(): img = process_image(img) id = 420 version = 1 - - # Mnemonics are disabled inherently, so we must enable - Account.enable_unaudited_hdwallet_features() - # Fetch this from ./home - mnemonic = os.getenv("MNEMONIC") - account = import_account(mnemonic) - + account = accounts.test_accounts.generate_test_account() # Make sure the model is deployed, then create an agent # Add contract address as a parameter, then add an update contract function. Also add a network: string parameter - agent = GizaAgent(id=id, version=version) + contract_address = os.getenv("CONTRACT_ADDRESS") + print("Contract Address: ", contract_address) + + agent = GizaAgent(contract_address=contract_address, chain_id=11155111, id=id, version=version) # Rather than calling predict, we call infer to store the result agent.infer(input_feed={"image": img}) - # Fetch the contract address and make sure it's a checksum address - contract_noncheck_address = os.getenv("CONTRACT_ADDRESS") - contract_address = Web3.to_checksum_address(contract_noncheck_address) - print("Contract Address: ", contract_address) # Adjust the inference result to be a single-value whole integer inference_result = int(agent.inference[0][0] * 10) # Pass the inference result and the sender address inference_result_arr = [inference_result, Address("0xEbeD10f21F32E7F327F8B923257c1b6EceD857b7")] - # No need for an ABI anymore - abi_path = "examples/on-chain_mnist/abi/MNISTNFT_abi.json" print("inference result: ", inference_result_arr) - value = 0 + value = None # Get the proof - (proof, proof_path) = agent.get_model_data() + (_, proof_path) = agent.get_model_data() # verify proof verified = await agent.verify(proof_path) - # Sign the proof if verification succeeds, transmit txn # Perhaps define an intent here? if verified: - print("Proof verified. 🚀") - (signed_proof, is_none, proofMessage, signable_proof_message) = agent.sign_proof(account, proof, proof_path) try: - receipt = await agent.transmit(account = account, contract_address=contract_address, chain_id=11155111, abi_path=abi_path, function_name="mint", params=inference_result_arr, value=value, signed_proof=signed_proof, is_none=is_none, proofMessage=proofMessage, signedProofMessage=signable_proof_message, rpc_url=None, unsafe=True) + receipt = await agent.transmit(account = account, function_name="mint", params=inference_result_arr, value=value, rpc_url=None) print("Receipt: ", receipt) + #TODO: (GIZ503) Perhaps we can clean up the receipt for users so that they can choose what to display / save return receipt except Exception as e: print(f"Error: {e}") diff --git a/examples/on-chain_mnist/cairo/lofi_mnst/inference/.gitignore b/examples/on-chain_mnist/cairo/lofi_mnst/inference/.gitignore deleted file mode 100644 index 1de5659..0000000 --- a/examples/on-chain_mnist/cairo/lofi_mnst/inference/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target \ No newline at end of file diff --git a/examples/on-chain_mnist/cairo/lofi_mnst/inference/.tool-versions b/examples/on-chain_mnist/cairo/lofi_mnst/inference/.tool-versions deleted file mode 100644 index 6d5fee9..0000000 --- a/examples/on-chain_mnist/cairo/lofi_mnst/inference/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -scarb 2.5.3 \ No newline at end of file diff --git a/examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.lock b/examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.lock deleted file mode 100644 index 7a63a92..0000000 --- a/examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.lock +++ /dev/null @@ -1,127 +0,0 @@ -# Code generated by scarb DO NOT EDIT. -version = 1 - -[[package]] -name = "_constant_value" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "alexandria_data_structures" -version = "0.2.0" -source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=800f5ad#800f5ad217847b5ded63c0302a444161766ee9d6" -dependencies = [ - "alexandria_encoding", -] - -[[package]] -name = "alexandria_encoding" -version = "0.1.0" -source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=800f5ad#800f5ad217847b5ded63c0302a444161766ee9d6" -dependencies = [ - "alexandria_math", - "alexandria_numeric", -] - -[[package]] -name = "alexandria_math" -version = "0.2.0" -source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=800f5ad#800f5ad217847b5ded63c0302a444161766ee9d6" -dependencies = [ - "alexandria_data_structures", -] - -[[package]] -name = "alexandria_merkle_tree" -version = "0.1.0" -source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=800f5ad#800f5ad217847b5ded63c0302a444161766ee9d6" - -[[package]] -name = "alexandria_numeric" -version = "0.1.0" -source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=800f5ad#800f5ad217847b5ded63c0302a444161766ee9d6" -dependencies = [ - "alexandria_math", -] - -[[package]] -name = "alexandria_sorting" -version = "0.1.0" -source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=800f5ad#800f5ad217847b5ded63c0302a444161766ee9d6" -dependencies = [ - "alexandria_data_structures", -] - -[[package]] -name = "cubit" -version = "1.3.0" -source = "git+https://github.com/influenceth/cubit.git?rev=6275608#62756082bf2555d7ab25c69d9c7bc30574ff1ce8" - -[[package]] -name = "inference" -version = "0.1.0" -dependencies = [ - "_constant_value", - "node_linear1_bias", - "node_linear1_weight", - "node_linear2_bias", - "node_linear2_weight", - "node_linear3_bias", - "node_linear3_weight", - "orion", -] - -[[package]] -name = "node_linear1_bias" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "node_linear1_weight" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "node_linear2_bias" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "node_linear2_weight" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "node_linear3_bias" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "node_linear3_weight" -version = "0.1.0" -dependencies = [ - "orion", -] - -[[package]] -name = "orion" -version = "0.2.3" -source = "git+https://github.com/gizatechxyz/orion.git?rev=7d84a42#7d84a423a1605548fcaf40d112f4e2d8fc5485bb" -dependencies = [ - "alexandria_data_structures", - "alexandria_merkle_tree", - "alexandria_sorting", - "cubit", -] diff --git a/examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.toml b/examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.toml deleted file mode 100644 index 28ea5a9..0000000 --- a/examples/on-chain_mnist/cairo/lofi_mnst/inference/Scarb.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "inference" -version = "0.1.0" -edition = "2023_10" - -[dependencies] -node_linear1_weight = { path = "../initializers/node_linear1_weight"} -node_linear1_bias = { path = "../initializers/node_linear1_bias"} -node_linear2_weight = { path = "../initializers/node_linear2_weight"} -node_linear2_bias = { path = "../initializers/node_linear2_bias"} -node_linear3_weight = { path = "../initializers/node_linear3_weight"} -node_linear3_bias = { path = "../initializers/node_linear3_bias"} -_constant_value = { path = "../attributes/_constant_value"} -orion = { git = "https://github.com/gizatechxyz/orion.git", rev = "7d84a42" } -[lib] -sierra-text = true \ No newline at end of file diff --git a/examples/on-chain_mnist/cairo/lofi_mnst/inference/src/lib.cairo b/examples/on-chain_mnist/cairo/lofi_mnst/inference/src/lib.cairo deleted file mode 100644 index f1243e9..0000000 --- a/examples/on-chain_mnist/cairo/lofi_mnst/inference/src/lib.cairo +++ /dev/null @@ -1,26 +0,0 @@ -use orion::operators::tensor::{Tensor, TensorTrait}; -use orion::operators::tensor::{U32Tensor, I32Tensor, I8Tensor, FP8x23Tensor, FP16x16Tensor, FP32x32Tensor, BoolTensor}; -use orion::numbers::{FP8x23, FP16x16, FP32x32}; -use orion::operators::matrix::{MutMatrix, MutMatrixImpl}; -use orion::operators::nn::{NNTrait, FP16x16NN}; - -use node_linear1_weight::get_node_linear1_weight; -use node_linear1_bias::get_node_linear1_bias; -use node_linear2_weight::get_node_linear2_weight; -use node_linear2_bias::get_node_linear2_bias; -use node_linear3_weight::get_node_linear3_weight; -use node_linear3_bias::get_node_linear3_bias; - -use _constant_value::get__constant_value; - -fn main(node_onnx_reshape_0: Tensor) -> Tensor { -let node__constant_output_0 = get__constant_value(); -let node__reshape_output_0 = TensorTrait::reshape(@node_onnx_reshape_0, node__constant_output_0.data); -let node__linear1_gemm_output_0 = NNTrait::gemm(node__reshape_output_0, get_node_linear1_weight(), Option::Some(get_node_linear1_bias()), Option::Some(FP16x16 { mag: 65536, sign: false }), Option::Some(FP16x16 { mag: 65536, sign: false }), false, true); -let node__relu_relu_output_0 = NNTrait::relu(@node__linear1_gemm_output_0); -let node__linear2_gemm_output_0 = NNTrait::gemm(node__relu_relu_output_0, get_node_linear2_weight(), Option::Some(get_node_linear2_bias()), Option::Some(FP16x16 { mag: 65536, sign: false }), Option::Some(FP16x16 { mag: 65536, sign: false }), false, true); -let node__relu_1_relu_output_0 = NNTrait::relu(@node__linear2_gemm_output_0); -let node_13 = NNTrait::gemm(node__relu_1_relu_output_0, get_node_linear3_weight(), Option::Some(get_node_linear3_bias()), Option::Some(FP16x16 { mag: 65536, sign: false }), Option::Some(FP16x16 { mag: 65536, sign: false }), false, true); - - node_13 - } \ No newline at end of file diff --git a/examples/on-chain_mnist/conversion_and_test.py b/examples/on-chain_mnist/conversion_and_test.py deleted file mode 100644 index 4b93f7d..0000000 --- a/examples/on-chain_mnist/conversion_and_test.py +++ /dev/null @@ -1,42 +0,0 @@ -from osiris.app import (serializer, create_tensor_from_array, convert) -import requests -from PIL import Image -import numpy as np - -def download_image(): - image_url = 'https://machinelearningmastery.com/wp-content/uploads/2019/02/sample_image.png' - image_data = requests.get(image_url).content - with open('seven.png', 'wb') as handler: - handler.write(image_data) - -def get_image(path): - with Image.open(path) as img: - img = img.convert('L') - img = np.array(img) - return img - -def process_image(img): - img = np.resize(img, (28,28)) - img = img.reshape(1,1,28,28) - img = img/255.0 - print(img.shape) - return img - -def serialize_image(img): - fp_impl = "FP16x16" - tensor = create_tensor_from_array(img, fp_impl) - serialized = serializer(tensor) - print(serialized) - -# def convert_image(img): -# convert(img, "./out.cairo") - -def main(): - download_image() - img = get_image('seven.png') - img = process_image(img) - serialize_image(img) - # convert_image(img) - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/giza_actions/agent.py b/giza_actions/agent.py index 2125364..0f1225e 100644 --- a/giza_actions/agent.py +++ b/giza_actions/agent.py @@ -12,7 +12,7 @@ import logging from giza.frameworks.cairo import verify from giza_actions.utils import get_endpoint_uri -from giza.client import DeploymentsClient +from giza.client import EndpointsClient from giza import API_HOST from pydantic import BaseModel from dotenv import load_dotenv @@ -23,9 +23,10 @@ # todo: extend to have request_id, endpoint_id: giza models (model_id and version_id), and version_id; remove proof_path from this and dependencies class ProofType(BaseModel): - model_id: int # The model being used for inference - proof_path: Optional[str] # The path to the proof of inference address: Address # Who is the signer? + model_id: int # The model being used for inference + version_id: int # The version of the model in reference + endpoint_id: int # The endpoint of the deployed model class Config: protected_namespaces = () @@ -52,7 +53,7 @@ class GizaAgent(GizaModel): verify: verifies the proof locally deploy: verifies the proof, then calls the smart contract with calldata from inference """ - + #TODO: (GIZ 502) Find a way to abstract away the chain_id to just a string with the chain name def __init__(self, contract_address: str, chain_id: int, id: Optional[int] = None, version: Optional[int] = None, **kwargs): """Initialize deployer. @@ -66,15 +67,22 @@ def __init__(self, contract_address: str, chain_id: int, id: Optional[int] = Non super().__init__(id=id, version=version, **kwargs) contract_sc = Web3.to_checksum_address(contract_address) - #TODO: How dow we get the endpoint id from this? + #TODO: (GIZ 501) How dow we get the endpoint id from this? self.endpoint_uri = get_endpoint_uri(self.model_id, self.version_id) + + # self.endpoint_id = self.contract_address = contract_sc self.chain_id = chain_id def infer(self, input_file=None, input_feed=None, job_size="S"): """ - Need docs on these ASAP + Runs a round of inference on the model and saves the result. + + Args: + input_file: The input file to use for inference + input_feed: The input feed to use for inference + job_size: The size of the job to run """ params = {} @@ -93,16 +101,22 @@ def infer(self, input_file=None, input_feed=None, job_size="S"): print("Inference saved! ✅ Result: ", self.inference, self.request_id) def get_model_data(self): - """Get proof data from GCP and save it as a class attribute""" - client = DeploymentsClient(API_HOST) + """ + Get proof data from GCP and save it as a class attribute + + Returns: + proof: The zk proof from GCP + proof_path: The path to the proof file + """ + client = EndpointsClient(API_HOST) - # get this from CLI proof_metadata_url = f"https://api.gizatech.xyz/api/v1/models/{self.model_id}/versions/{self.version_id}/endpoints/{self.endpoint_uri}/proofs/{self.request_id}:download" time.sleep(3) logging.info(f"Fetching proof metadata from {proof_metadata_url}... ⏳") timeout = time.time() + 8000 + #TODO: GIZ501 Add endpoint ID here too once we have it print(f"Request ID: {self.request_id}") print(f"Model ID: {self.model_id}") print(f"Version ID: {self.version_id}") @@ -130,6 +144,7 @@ def get_model_data(self): return (content, os.path.abspath(proof_file)) + # TODO: (GIZ500) Find a way to match function name with the specific function in the contract regardless of spaces, caps, etc. ALSO, add a method to bind types to the parameters async def _generate_calldata(self, function_name: str, parameters: list): """ Generate calldata for calling a smart contract function @@ -159,26 +174,19 @@ async def _generate_calldata(self, function_name: str, parameters: list): calldata = contract.encodeABI(function_name, args=parameters) return calldata - def sign_proof(self, account: Account, proof: Optional[bytes], proof_path: Optional[str]): + def sign_proof(self, account: Account, proof: bytes): address = account.address - proofType = ProofType(model_id=self.model_id, proof_path=proof_path, address=address) + proofType = ProofType(address=address, model_id=self.model_id, version_id=self.version_id, endpoint_id=self.endpoint_id) proofMessage = ProofMessage(proofType=proofType) version = b'\x19' header = b'' - if proof is None: - dummy_message = "dummy_proof" - dummy_body = dummy_message.encode('utf-8') - dummy_signable_message = SignableMessage(version=version, header=header, body=dummy_body) - dummy_signature = account.sign_message(dummy_signable_message) - return (dummy_signature, True, proofMessage, dummy_signable_message) - if isinstance(proof, str): body = proof.encode('utf-8') else: - body = proof + body = proofMessage signable_message = SignableMessage(version=version, header=header, body=body) sig = account.sign_message(signable_message) return (sig, False, proofMessage, signable_message)